~ruther/guix-local

e261e27676c018f23fb6c6fdc282e2dd40fa1985 — Ludovic Courtès 8 years ago e4ecd51
guix system: 'init' displays a progress bar while copying.

Until now it would print the name of each store item being copied, which
was verbose and unhelpful.

* guix/scripts/system.scm (copy-closure): Use 'progress-reporter/bar'
and 'call-with-progress-reporter'.
(guix-system): Parameterize 'current-terminal-columns'.
1 files changed, 16 insertions(+), 3 deletions(-)

M guix/scripts/system.scm
M guix/scripts/system.scm => guix/scripts/system.scm +16 -3
@@ 36,6 36,8 @@
  #:use-module (guix graph)
  #:use-module (guix scripts graph)
  #:use-module (guix build utils)
  #:use-module (guix progress)
  #:use-module ((guix build syscalls) #:select (terminal-columns))
  #:use-module (gnu build install)
  #:autoload   (gnu build file-systems)
                 (find-partition-by-label find-partition-by-uuid)


@@ 141,8 143,18 @@ REFERENCES as its set of references."
TARGET, and register them."
  (mlet* %store-monad ((to-copy (topologically-sorted* (list item)))
                       (refs    (mapm %store-monad references* to-copy)))
    (for-each (cut copy-item <> <> target #:log-port log-port)
              to-copy refs)
    (define progress-bar
      (progress-reporter/bar (length to-copy)
                             (format #f (G_ "copying to '~a'...")
                                     target)))

    (call-with-progress-reporter progress-bar
      (lambda (report)
        (let ((void (%make-void-port "w")))
          (for-each (lambda (item refs)
                      (copy-item item refs target #:log-port void)
                      (report))
                    to-copy refs))))

    (return *unspecified*)))



@@ 1092,7 1104,8 @@ argument list and OPTS is the option alist."
                                         parse-sub-command))
           (args     (option-arguments opts))
           (command  (assoc-ref opts 'action)))
      (parameterize ((%graft? (assoc-ref opts 'graft?)))
      (parameterize ((%graft? (assoc-ref opts 'graft?))
                     (current-terminal-columns (terminal-columns)))
        (process-command command args opts)))))

;;; Local Variables: