~ruther/guix-local

1252dd325bbb71387092e9e89ff1ede8ef3f1d5f — Ludovic Courtès 8 years ago e695d79
progress: Factorize erase-in-line.

* guix/progress.scm (erase-in-line): New procedure.
(progress-reporter/file): Use it.
1 files changed, 7 insertions(+), 2 deletions(-)

M guix/progress.scm
M guix/progress.scm => guix/progress.scm +7 -2
@@ 153,6 153,11 @@ width of the bar is BAR-WIDTH."
            (make-string filled #\#)
            (make-string empty #\space))))

(define (erase-in-line port)
  "Write an ANSI erase-in-line sequence to PORT to erase the whole line and
move the cursor to the beginning of the line."
  (display "\r\x1b[K" port))

(define* (progress-reporter/file file size
                                 #:optional (log-port (current-output-port))
                                 #:key (abbreviation basename))


@@ 176,7 181,7 @@ ABBREVIATION used to shorten FILE for display."
                                     (byte-count->string throughput)
                                     (seconds->string elapsed)
                                     (progress-bar %) %)))
            (display "\r\x1b[K" log-port)
            (erase-in-line log-port)
            (display (string-pad-middle left right
                                        (current-terminal-columns))
                     log-port)


@@ 188,7 193,7 @@ ABBREVIATION used to shorten FILE for display."
                                     (byte-count->string throughput)
                                     (seconds->string elapsed)
                                     (byte-count->string transferred))))
            (display "\r\x1b[K" log-port)
            (erase-in-line log-port)
            (display (string-pad-middle left right
                                        (current-terminal-columns))
                     log-port)