weather: Accept package specs on the command line.

Previously, non-option arguments would be ignored.  Now it puts them to
good use.

* guix/scripts/weather.scm (guix-weather)[package-list]: New procedure.
Use it.
* doc/guix.texi (Invoking guix weather): Adjust accordingly.
This commit is contained in:
Ludovic Courtès 2019-05-21 22:58:19 +02:00
parent 4e941436c7
commit b1903b99e0
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 27 additions and 7 deletions

View File

@ -10089,8 +10089,17 @@ challenge}, it ignores signatures on those substitutes, which is
innocuous since the command only gathers statistics and cannot install innocuous since the command only gathers statistics and cannot install
those substitutes. those substitutes.
Among other things, it is possible to query specific system types and The general syntax is:
specific package sets. The available options are listed below.
@example
guix weather @var{options}@dots{} [@var{packages}@dots{}]
@end example
When @var{packages} is omitted, @command{guix weather} checks the availability
of substitutes for @emph{all} the packages, or for those specified with
@option{--manifest}; otherwise it only considers the specified packages. It
is also possible to query specific system types with @option{--system}. The
available options are listed below.
@table @code @table @code
@item --substitute-urls=@var{urls} @item --substitute-urls=@var{urls}

View File

@ -252,7 +252,7 @@ are queued~%")
;;; ;;;
(define (show-help) (define (show-help)
(display (G_ "Usage: guix weather [OPTIONS] (display (G_ "Usage: guix weather [OPTIONS] [PACKAGES ...]
Report the availability of substitutes.\n")) Report the availability of substitutes.\n"))
(display (G_ " (display (G_ "
--substitute-urls=URLS --substitute-urls=URLS
@ -469,6 +469,20 @@ SERVER. Display information for packages with at least THRESHOLD dependents."
;;; ;;;
(define (guix-weather . args) (define (guix-weather . args)
(define (package-list opts)
;; Return the package list specified by OPTS.
(let ((file (assoc-ref opts 'manifest))
(base (filter-map (match-lambda
(('argument . spec)
(specification->package spec))
(_
#f))
opts)))
(if (and (not file) (null? base))
(all-packages)
(append base
(if file (load-manifest file) '())))))
(with-error-handling (with-error-handling
(parameterize ((current-terminal-columns (terminal-columns))) (parameterize ((current-terminal-columns (terminal-columns)))
(let* ((opts (parse-command-line args %options (let* ((opts (parse-command-line args %options
@ -481,10 +495,7 @@ SERVER. Display information for packages with at least THRESHOLD dependents."
opts) opts)
(() (list (%current-system))) (() (list (%current-system)))
(systems systems))) (systems systems)))
(packages (let ((file (assoc-ref opts 'manifest))) (packages (package-list opts))
(if file
(load-manifest file)
(all-packages))))
(items (with-store store (items (with-store store
(parameterize ((%graft? #f)) (parameterize ((%graft? #f))
(concatenate (concatenate