From 2d7fc7daf14e6e965a4d33baa7b9d52873f37691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 23 Nov 2015 17:47:22 +0100 Subject: [PATCH] refresh: Add '--expression'. * guix/scripts/refresh.scm (%options, show-help): Add --expression. (guix-refresh): Honor it. * doc/guix.texi (Invoking guix refresh): Document it. --- doc/guix.texi | 13 +++++++++++++ guix/scripts/refresh.scm | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index 233c371fdb..03363c170c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4277,6 +4277,19 @@ The following options are supported: @table @code +@item --expression=@var{expr} +@itemx -e @var{expr} +Consider the package @var{expr} evaluates to. + +This is useful to precisely refer to a package, as in this example: + +@example +guix refresh -l -e '(@@@@ (gnu packages commencement) glibc-final)' +@end example + +This command lists the dependents of the ``final'' libc (essentially all +the packages.) + @item --update @itemx -u Update distribution source files (package recipes) in place. This is diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index c9eff7ba67..8e8a34bd0f 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -80,6 +80,9 @@ (option '(#\L "list-updaters") #f #f (lambda args (list-updaters-and-exit))) + (option '(#\e "expression") #t #f + (lambda (opt name arg result) + (alist-cons 'expression arg result))) (option '(#\l "list-dependent") #f #f (lambda (opt name arg result) (alist-cons 'list-dependent? #t result))) @@ -115,6 +118,8 @@ Update package definitions to match the latest upstream version. When PACKAGE... is given, update only the specified packages. Otherwise update all the packages of the distribution, or the subset thereof specified with `--select'.\n")) + (display (_ " + -e, --expression=EXPR consider the package EXPR evaluates to")) (display (_ " -u, --update update source files in place")) (display (_ " @@ -348,6 +353,8 @@ update would trigger a complete rebuild." ;; Take either the specified version or the ;; latest one. (specification->package spec)) + (('expression . exp) + (read/eval-package-expression exp)) (_ #f)) opts) (() ; default to all packages