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 @@ (define %options (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 @@ (define (show-help) 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 @@ (define core-package? ;; 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