summaryrefslogtreecommitdiff
path: root/guix/scripts/archive.scm
diff options
context:
space:
mode:
authorRicardo Wurmus <ricardo.wurmus@mdc-berlin.de>2017-01-03 16:20:15 +0100
committerRicardo Wurmus <rekado@elephly.net>2017-01-06 16:44:00 +0100
commit03476a23ff2d4175b7d3c808726178f764359bec (patch)
treeb26d889f05f7685501d58aac3aa313dccb53fade /guix/scripts/archive.scm
parent3a3bf2f81977a1ff4a74957753340aab57f5a12d (diff)
downloadguix-patches-03476a23ff2d4175b7d3c808726178f764359bec.tar
guix-patches-03476a23ff2d4175b7d3c808726178f764359bec.tar.gz
guix: Add Docker image export.
* guix/docker.scm: New file. * Makefile.am (MODULES): Register it. * guix/scripts/archive.scm (show-help, %options, guix-archive): Add support for "--format". * doc/guix.texi (Invoking guix archive): Document it.
Diffstat (limited to 'guix/scripts/archive.scm')
-rw-r--r--guix/scripts/archive.scm17
1 files changed, 16 insertions, 1 deletions
diff --git a/guix/scripts/archive.scm b/guix/scripts/archive.scm
index 7e432351ed..6eba9e0008 100644
--- a/guix/scripts/archive.scm
+++ b/guix/scripts/archive.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,6 +31,7 @@
#:use-module (guix ui)
#:use-module (guix pki)
#:use-module (guix pk-crypto)
+ #:use-module (guix docker)
#:use-module (guix scripts)
#:use-module (guix scripts build)
#:use-module (gnu packages)
@@ -63,6 +65,8 @@ Export/import one or more packages from/to the store.\n"))
(display (_ "
--export export the specified files/packages to stdout"))
(display (_ "
+ --format=FMT export files/packages in the specified format FMT"))
+ (display (_ "
-r, --recursive combined with '--export', include dependencies"))
(display (_ "
--import import from the archive passed on stdin"))
@@ -117,6 +121,9 @@ Export/import one or more packages from/to the store.\n"))
(option '("export") #f #f
(lambda (opt name arg result)
(alist-cons 'export #t result)))
+ (option '(#\f "format") #t #f
+ (lambda (opt name arg result . rest)
+ (alist-cons 'format arg result)))
(option '(#\r "recursive") #f #f
(lambda (opt name arg result)
(alist-cons 'export-recursive? #t result)))
@@ -331,7 +338,15 @@ the input port."
(else
(with-store store
(cond ((assoc-ref opts 'export)
- (export-from-store store opts))
+ (cond ((equal? (assoc-ref opts 'format) "docker")
+ (match (car opts)
+ (('argument . (? store-path? item))
+ (format #t "~a\n"
+ (build-docker-image
+ item
+ #:system (assoc-ref opts 'system))))
+ (_ (leave (_ "argument must be a direct store path~%")))))
+ (_ (export-from-store store opts))))
((assoc-ref opts 'import)
(import-paths store (current-input-port)))
((assoc-ref opts 'missing)