~ruther/guix-local

3676f892551d562e1a1360d79b208e687ece08c2 — Ludovic Courtès 9 years ago 2fd370e
refresh: '--list-updaters' shows updater coverage.

* guix/scripts/refresh.scm (list-updaters-and-exit): Compute the
coverage ratio of each updater and print it.  Print the coverage ratio
for all the updaters.
* doc/guix.texi (Invoking guix refresh): Document it.
2 files changed, 25 insertions(+), 5 deletions(-)

M doc/guix.texi
M guix/scripts/refresh.scm
M doc/guix.texi => doc/guix.texi +3 -0
@@ 5394,6 5394,9 @@ be used when passing @command{guix refresh} one or more package names:
@itemx -L
List available updaters and exit (see @option{--type} above.)

For each updater, display the fraction of packages it covers; at the
end, display the fraction of packages covered by all these updaters.

@item --list-dependent
@itemx -l
List top-level dependent packages that would need to be rebuilt as a

M guix/scripts/refresh.scm => guix/scripts/refresh.scm +22 -5
@@ 220,11 220,28 @@ unavailable optional dependencies such as Guile-JSON."
(define (list-updaters-and-exit)
  "Display available updaters and exit."
  (format #t (_ "Available updaters:~%"))
  (for-each (lambda (updater)
              (format #t "- ~a: ~a~%"
                      (upstream-updater-name updater)
                      (_ (upstream-updater-description updater))))
            %updaters)
  (newline)

  (let* ((packages (fold-packages cons '()))
         (total    (length packages)))
    (define covered
      (fold (lambda (updater covered)
              (let ((matches (count (upstream-updater-predicate updater)
                                    packages)))
                ;; TRANSLATORS: The parenthetical expression here is rendered
                ;; like "(42% coverage)" and denotes the fraction of packages
                ;; covered by the given updater.
                (format #t (_ "  - ~a: ~a (~2,1f% coverage)~%")
                        (upstream-updater-name updater)
                        (_ (upstream-updater-description updater))
                        (* 100. (/ matches total)))
                (+ covered matches)))
            0
            %updaters))

    (newline)
    (format #t (_ "~2,1f% of the packages are covered by these updaters.~%")
            (* 100. (/ covered total))))
  (exit 0))

(define (warn-no-updater package)