From 2aa6efb0b9952595853c05294450b4254f64521e Mon Sep 17 00:00:00 2001 From: Cyril Roelandt Date: Thu, 17 Jul 2014 02:36:09 +0200 Subject: guix package: add a "show" option. * doc/guix.texi: Update the documentation. * guix/scripts/package.scm: Add a "show" option. * tests/guix-package.sh: Add a test for the "show" option. --- doc/guix.texi | 24 ++++++++++++++++++++++++ guix/scripts/package.scm | 15 +++++++++++++++ tests/guix-package.sh | 3 +++ 3 files changed, 42 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index d30142fcbe..ab9a533047 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -844,6 +844,30 @@ name: gmp @dots{} @end example +@item --show=@var{package} +Show details about @var{package}, taken from the list of available packages, in +@code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU +recutils manual}). + +@example +$ guix package --show=python | recsel -p name,version +name: python +version: 2.7.6 + +name: python +version: 3.3.5 +@end example + +You may also specify the full name of a package to only get details about a +specific version of it: +@example +$ guix package --show=python-3.3.5 | recsel -p name,version +name: python +version: 3.3.5 +@end example + + + @item --list-installed[=@var{regexp}] @itemx -I [@var{regexp}] List the currently installed packages in the specified profile, with the diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 1c3209f905..0d17414b4f 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -517,6 +517,8 @@ (define (show-help) (display (_ " -A, --list-available[=REGEXP] list available packages matching REGEXP")) + (display (_ " + --show=PACKAGE show details about PACKAGE")) (newline) (show-build-options-help) (newline) @@ -615,6 +617,11 @@ (define %options (values (cons `(query list-available ,(or arg "")) result) #f))) + (option '("show") #t #t + (lambda (opt name arg result arg-handler) + (values (cons `(query show ,arg) + result) + #f))) %standard-build-options)) @@ -1042,6 +1049,14 @@ (define (list-generation number) (find-packages-by-description regexp))) #t)) + (('show requested-name) + (let-values (((name version) + (package-name->name+version requested-name))) + (leave-on-EPIPE + (for-each (cute package->recutils <> (current-output-port)) + (find-packages-by-name name version))) + #t)) + (('search-paths) (let* ((manifest (profile-manifest profile)) (entries (manifest-entries manifest)) diff --git a/tests/guix-package.sh b/tests/guix-package.sh index 4d75955411..6b99275240 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -176,6 +176,9 @@ then false; else true; fi # Check whether `--list-available' returns something sensible. guix package -p "$profile" -A 'gui.*e' | grep guile +# Check whether `--show' returns something sensible. +guix package --show=guile | grep "^Package: guile" + # There's no generation older than 12 months, so the following command should # have no effect. generation="`readlink_base "$profile"`" -- cgit v1.2.3