diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-04-01 13:41:52 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-04-01 18:01:06 +0200 |
commit | 2a363bb5d38ebe3d354ccf7ee5953e8266822dad (patch) | |
tree | cfe84b00a23d5a5030fe10039359cfea51061d8d | |
parent | c1093dc7a6d069091d22a3d8b5928e0c0fce273a (diff) | |
download | guix-2a363bb5d38ebe3d354ccf7ee5953e8266822dad.tar.gz |
weather: Colorize the output.
* guix/colors.scm (coloring-procedure): Export. * guix/scripts/weather.scm (report-server-coverage): Highlight the server name and colorize the availability ratio.
-rw-r--r-- | guix/colors.scm | 1 | ||||
-rw-r--r-- | guix/scripts/weather.scm | 19 |
2 files changed, 15 insertions, 5 deletions
diff --git a/guix/colors.scm b/guix/colors.scm index ae0a583d94..567c822c73 100644 --- a/guix/colors.scm +++ b/guix/colors.scm @@ -29,6 +29,7 @@ #:export (color color? + coloring-procedure colorize-string highlight highlight/warn diff --git a/guix/scripts/weather.scm b/guix/scripts/weather.scm index 60a697d1ac..adba614b8c 100644 --- a/guix/scripts/weather.scm +++ b/guix/scripts/weather.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com> @@ -31,6 +31,7 @@ #:use-module (guix store) #:use-module (guix grafts) #:use-module (guix gexp) + #:use-module (guix colors) #:use-module ((guix build syscalls) #:select (terminal-columns)) #:use-module ((guix build utils) #:select (every*)) #:use-module (guix substitutes) @@ -203,7 +204,7 @@ In case ITEMS is an empty list, return 1 instead." #:make-progress-reporter (lambda* (total #:key url #:allow-other-keys) (progress-reporter/bar total))))) - (format #t "~a~%" server) + (format #t (highlight "~a~%") server) (let ((obtained (length narinfos)) (requested (length items)) (missing (lset-difference string=? @@ -215,9 +216,17 @@ In case ITEMS is an empty list, return 1 instead." (time (+ (time-second time) (/ (time-nanosecond time) 1e9)))) (when (> requested 0) - (format #t (G_ " ~,1f% substitutes available (~h out of ~h)~%") - (* 100. (/ obtained requested 1.)) - obtained requested)) + (let* ((ratio (/ obtained requested 1.)) + (colorize (cond ((> ratio 0.80) + (coloring-procedure (color BOLD GREEN))) + ((< ratio 0.50) + (coloring-procedure (color BOLD RED))) + (else + highlight)))) + (format #t + (colorize (G_ " ~,1f% substitutes available (~h out of ~h)~%")) + (* 100. ratio) + obtained requested))) (let ((total (/ (reduce + 0 sizes) MiB))) (match (length sizes) ((? zero?) |