From 2843fed0e973145f01fb2004c99aca8e8837b332 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 12 Mar 2020 18:30:05 +0100 Subject: weather: Allow for multiple '--manifest' options. * guix/scripts/weather.scm (guix-weather)[package-list]: Account for all the 'manifest entries in OPTS. * doc/guix.texi (Invoking guix weather): Document it. --- doc/guix.texi | 3 +++ guix/scripts/weather.scm | 22 ++++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index ca21857a31..9a5b5f7fbe 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -10830,6 +10830,9 @@ specified in @var{file}. @var{file} must contain a @dfn{manifest}, as with the @code{-m} option of @command{guix package} (@pxref{Invoking guix package}). +This option can be repeated several times, in which case the manifests +are concatenated. + @item --coverage[=@var{count}] @itemx -c [@var{count}] Report on substitute coverage for packages: list packages with at least diff --git a/guix/scripts/weather.scm b/guix/scripts/weather.scm index 60915d3451..733986be0c 100644 --- a/guix/scripts/weather.scm +++ b/guix/scripts/weather.scm @@ -499,17 +499,19 @@ SERVER. Display information for packages with at least THRESHOLD dependents." (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)) + (let ((files (filter-map (match-lambda + (('manifest . file) file) + (_ #f)) + opts)) + (base (filter-map (match-lambda + (('argument . spec) + (specification->package spec)) + (_ + #f)) + opts))) + (if (and (null? files) (null? base)) (all-packages) - (append base - (if file (load-manifest file) '()))))) + (append base (append-map load-manifest files))))) (with-error-handling (parameterize ((current-terminal-columns (terminal-columns)) -- cgit v1.2.3