[PATCH] guix package: Add 'guix show' alias.

DoneSubmitted by zimoun.
2 participants
  • Ludovic Courtès
  • zimoun
zimoun wrote on 19 Sep 2019 19:24
(address . guix-patches@gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
* guix/scripts/show.scm: New file.* Makefile.am (MODULES): Add it.* po/guix/POTFILES.in: Add it.* tests/guix-package-aliases.sh: Add test.* doc/guix.texi (Invoking guix package): Document it and use it in a example.--- Makefile.am | 1 + doc/guix.texi | 8 +++-- guix/scripts/show.scm | 67 +++++++++++++++++++++++++++++++++++ po/guix/POTFILES.in | 1 + tests/guix-package-aliases.sh | 4 +++ 5 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 guix/scripts/show.scm
Toggle diff (138 lines)diff --git a/Makefile.am b/Makefile.amindex 7e3b5c1070..e33366f48b 100644--- a/Makefile.am+++ b/Makefile.am@@ -241,6 +241,7 @@ MODULES = \ guix/scripts/remove.scm \ guix/scripts/upgrade.scm \ guix/scripts/search.scm \+ guix/scripts/show.scm \ guix/scripts/gc.scm \ guix/scripts/hash.scm \ guix/scripts/pack.scm \diff --git a/doc/guix.texi b/doc/guix.texiindex 55935b3794..03028de97b 100644--- a/doc/guix.texi+++ b/doc/guix.texi@@ -2657,7 +2657,9 @@ For your convenience, we also provide the following aliases: @item @command{guix remove} is an alias for @command{guix package -r}, @item-and @command{guix upgrade} is an alias for @command{guix package -u}.+@command{guix upgrade} is an alias for @command{guix package -u},+@item+and @command{guix show} is an alias for @command{guix package --show=}. @end itemize These aliases are less expressive than @command{guix package} and provide@@ -3020,9 +3022,9 @@ 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:+specific version of it (this time using the @command{guix show} alias): @example-$ guix package --show=python@@3.4 | recsel -p name,version+$ guix show python@@3.4 | recsel -p name,version name: python version: 3.4.3 @end examplediff --git a/guix/scripts/show.scm b/guix/scripts/show.scmnew file mode 100644index 0000000000..94f0559358--- /dev/null+++ b/guix/scripts/show.scm@@ -0,0 +1,67 @@+;;; GNU Guix --- Functional package management for GNU+;;; Copyright © 2019 Simon Tournier <zimon.toutoune@gmail.com>+;;;+;;; 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 <http://www.gnu.org/licenses/>.++(define-module (guix scripts show)+ #:use-module (guix ui)+ #:use-module (guix scripts package)+ #:use-module (guix scripts)+ #:use-module (srfi srfi-1)+ #:use-module (srfi srfi-26)+ #:use-module (srfi srfi-37)+ #:export (guix-show))++(define (show-help)+ (display (G_ "Usage: guix show [OPTION] PACKAGE...+Show details about PACKAGE."))+ (display (G_"+This is an alias for 'guix package --show='.\n"))+ (newline)+ (display (G_ "+ -h, --help display this help and exit"))+ (display (G_ "+ -V, --version display version information and exit"))+ (newline)+ (show-bug-report-information))++(define %options+ ;; Specification of the command-line options.+ (list (option '(#\h "help") #f #f+ (lambda args+ (show-help)+ (exit 0)))+ (option '(#\V "version") #f #f+ (lambda args+ (show-version-and-exit "guix show")))))++(define (guix-show . args)+ (define (handle-argument arg result)+ ;; Treat all non-option arguments as regexps.+ (cons `(query show ,arg)+ result))++ (define opts+ (args-fold* args %options+ (lambda (opt name arg . rest)+ (leave (G_ "~A: unrecognized option~%") name))+ handle-argument+ '()))++ (unless (assoc-ref opts 'query)+ (leave (G_ "missing arguments: no package to show~%")))++ (guix-package* opts))diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.inindex 8b556ac0ec..f629034d61 100644--- a/po/guix/POTFILES.in+++ b/po/guix/POTFILES.in@@ -47,6 +47,7 @@ guix/scripts/install.scm guix/scripts/remove.scm guix/scripts/upgrade.scm guix/scripts/search.scm+guix/scripts/show.scm guix/scripts/gc.scm guix/scripts/hash.scm guix/scripts/import.scmdiff --git a/tests/guix-package-aliases.sh b/tests/guix-package-aliases.shindex 5c68664093..520f3309de 100644--- a/tests/guix-package-aliases.sh+++ b/tests/guix-package-aliases.sh@@ -58,3 +58,7 @@ if guix remove -i guile-bootstrap -p "$profile" --bootstrap then false; else true; fi guix search '\<board\>' game | grep '^name: gnubg'++guix show --version+guix show guile+guix show python@3 | recsel -p name,version-- 2.21.0
Ludovic Courtès wrote on 20 Sep 2019 22:57
(name . zimoun)(address . zimon.toutoune@gmail.com)(address . 37462-done@debbugs.gnu.org)
zimoun <zimon.toutoune@gmail.com> skribis:
Toggle quote (6 lines)> * guix/scripts/show.scm: New file.> * Makefile.am (MODULES): Add it.> * po/guix/POTFILES.in: Add it.> * tests/guix-package-aliases.sh: Add test.> * doc/guix.texi (Invoking guix package): Document it and use it in a example.
Applied, woohoo!
Toggle quote (2 lines)> +guix show python@3 | recsel -p name,version
I changed recsel to grep because we don’t generally assume that recselis available in the build environment.
Your comment

This issue is archived.

To comment on this conversation send email to 37462@debbugs.gnu.org