[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
10/10: git: Make better use of the better progress bar.
From: |
guix-commits |
Subject: |
10/10: git: Make better use of the better progress bar. |
Date: |
Thu, 23 Feb 2023 17:54:58 -0500 (EST) |
nckx pushed a commit to branch master
in repository guix.
commit 5d10644371abd54d0edcd638691113f0a92de743
Author: Tobias Geerinckx-Rice <me@tobias.gr>
AuthorDate: Sun Feb 19 01:00:00 2023 +0100
git: Make better use of the better progress bar.
Commit 189525412e3d803f3f77e15ec4a62aaa57f65a2d introduced
‘high-resolution’ Unicode progress bars, but these require more granular
calls to reach their full potential.
* guix/git.scm (show-progress): Derive the number of PROGRESS-BAR
updates from its maximum resolution, rather than hard-coding 100.
---
guix/git.scm | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/guix/git.scm b/guix/git.scm
index a1e6b3fa9c..4019323327 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2021 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2023 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -141,11 +142,6 @@ the 'SSL_CERT_FILE' and 'SSL_CERT_DIR' environment
variables."
(define total
(indexer-progress-total-objects progress))
- (define hundredth
- (match (quotient total 100)
- (0 1)
- (x x)))
-
(define-values (done label)
(if (< (indexer-progress-received-objects progress) total)
(values (indexer-progress-received-objects progress)
@@ -156,14 +152,22 @@ the 'SSL_CERT_FILE' and 'SSL_CERT_DIR' environment
variables."
(define %
(* 100. (/ done total)))
- (when (and (< % 100) (zero? (modulo done hundredth)))
+ ;; TODO: Both should be handled & exposed by the PROGRESS-BAR API instead.
+ (define width
+ (max (- (current-terminal-columns)
+ (string-length label) 7)
+ 3))
+
+ (define grain
+ (match (quotient total (max 100 (* 8 width))) ; assume 1/8 glyph resolution
+ (0 1)
+ (x x)))
+
+ (when (and (< % 100) (zero? (modulo done grain)))
(erase-current-line (current-error-port))
- (let ((width (max (- (current-terminal-columns)
- (string-length label) 7)
- 3)))
- (format (current-error-port) "~a ~3,d% ~a"
+ (format (current-error-port) "~a ~3,d% ~a"
label (inexact->exact (round %))
- (progress-bar % width)))
+ (progress-bar % width))
(force-output (current-error-port)))
(when (= % 100.)
- branch master updated (c756c62cfd -> 5d10644371), guix-commits, 2023/02/23
- 02/10: gnu: epson-inkjet-printer-escpr: Update to 1.7.24., guix-commits, 2023/02/23
- 07/10: gnu: bees: Drop ‘dedupe’ slang., guix-commits, 2023/02/23
- 03/10: gnu: linux-libre: Consistently provide the drop_monitor module., guix-commits, 2023/02/23
- 05/10: gnu: homebank: Update to 5.6.2., guix-commits, 2023/02/23
- 06/10: gnu: bees: Update to 0.9.2., guix-commits, 2023/02/23
- 09/10: git: Factor out INDEXER-PROGRESS-TOTAL-OBJECTS access., guix-commits, 2023/02/23
- 01/10: gnu: Use HTTPS package home pages wherever possible., guix-commits, 2023/02/23
- 04/10: gnu: xvfb-run: Update to 21.1.7-1., guix-commits, 2023/02/23
- 08/10: ssh: Factor out progress % calculation., guix-commits, 2023/02/23
- 10/10: git: Make better use of the better progress bar.,
guix-commits <=