From 32efa254a80672bdf5199b8e200764615a3cf68b Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 1 Jul 2015 20:32:07 -0400 Subject: scripts: Add 'container' subcommand. * guix/scripts/container.scm: New file. * guix/scripts/container/exec.scm: New file. * po/guix/POTFILES.in: Add them. * Makefile.am (MODULES): Add them. * doc/guix.texi (Invoking guix container): New section. --- guix/scripts/container.scm | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 guix/scripts/container.scm (limited to 'guix/scripts/container.scm') diff --git a/guix/scripts/container.scm b/guix/scripts/container.scm new file mode 100644 index 000000000..cd9f345b6 --- /dev/null +++ b/guix/scripts/container.scm @@ -0,0 +1,63 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix scripts container) + #:use-module (ice-9 match) + #:use-module (guix ui) + #:export (guix-container)) + +(define (show-help) + (display (_ "Usage: guix container ACTION ARGS... +Build and manipulate Linux containers.\n")) + (newline) + (display (_ "The valid values for ACTION are:\n")) + (newline) + (display (_ "\ + exec execute a command inside of an existing container\n")) + (newline) + (display (_ " + -h, --help display this help and exit")) + (display (_ " + -V, --version display version information and exit")) + (newline) + (show-bug-report-information)) + +(define %actions '("exec")) + +(define (resolve-action name) + (let ((module (resolve-interface + `(guix scripts container ,(string->symbol name)))) + (proc (string->symbol (string-append "guix-container-" name)))) + (module-ref module proc))) + +(define (guix-container . args) + (with-error-handling + (match args + (() + (format (current-error-port) + (_ "guix container: missing action~%"))) + ((or ("-h") ("--help")) + (show-help) + (exit 0)) + (("--version") + (show-version-and-exit "guix container")) + ((action args ...) + (if (member action %actions) + (apply (resolve-action action) args) + (format (current-error-port) + (_ "guix container: invalid action~%"))))))) -- cgit v1.3