summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-03-12 18:30:05 +0100
committerLudovic Courtès <ludo@gnu.org>2020-03-12 18:32:16 +0100
commit2843fed0e973145f01fb2004c99aca8e8837b332 (patch)
tree557ce76dee262145406599d58148b03763f54bcc
parent71bb485541328cdce214ada44be998570571bf36 (diff)
downloadguix-2843fed0e973145f01fb2004c99aca8e8837b332.tar.gz
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.
-rw-r--r--doc/guix.texi3
-rw-r--r--guix/scripts/weather.scm22
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))