pull: Truncate the list of packages displayed on completion.
Previously, if you'd run 'guix pull' after a couple of weeks, it would fill your screen with package names, which is unhelpful. * guix/scripts/pull.scm (ellipsis): New procedure. (display-new/upgraded-packages): Add #:concise?. [list->enumeration]: New procedure. Use it instead of 'string-join'. (display-profile-news): Pass #:concise? #t.
This commit is contained in:
parent
9f4169f6c8
commit
539af7f257
|
@ -181,6 +181,7 @@ Download and deploy the latest version of Guix.\n"))
|
||||||
(new (profile-package-alist
|
(new (profile-package-alist
|
||||||
(generation-file-name profile current))))
|
(generation-file-name profile current))))
|
||||||
(display-new/upgraded-packages old new
|
(display-new/upgraded-packages old new
|
||||||
|
#:concise? #t
|
||||||
#:heading (G_ "New in this revision:\n"))))
|
#:heading (G_ "New in this revision:\n"))))
|
||||||
(_ #t)))
|
(_ #t)))
|
||||||
|
|
||||||
|
@ -377,16 +378,33 @@ of packages upgraded in ALIST2."
|
||||||
alist2)))
|
alist2)))
|
||||||
(values new upgraded)))
|
(values new upgraded)))
|
||||||
|
|
||||||
|
(define* (ellipsis #:optional (port (current-output-port)))
|
||||||
|
"Return HORIZONTAL ELLIPSIS three dots if PORT's encoding cannot represent
|
||||||
|
it."
|
||||||
|
(match (port-encoding port)
|
||||||
|
("UTF-8" "…")
|
||||||
|
(_ "...")))
|
||||||
|
|
||||||
(define* (display-new/upgraded-packages alist1 alist2
|
(define* (display-new/upgraded-packages alist1 alist2
|
||||||
#:key (heading ""))
|
#:key (heading "") concise?)
|
||||||
"Given the two package name/version alists ALIST1 and ALIST2, display the
|
"Given the two package name/version alists ALIST1 and ALIST2, display the
|
||||||
list of new and upgraded packages going from ALIST1 to ALIST2. When ALIST1
|
list of new and upgraded packages going from ALIST1 to ALIST2. When ALIST1
|
||||||
and ALIST2 differ, display HEADING upfront."
|
and ALIST2 differ, display HEADING upfront. When CONCISE? is true, do not
|
||||||
|
display long package lists that would fill the user's screen."
|
||||||
(define (pretty str column)
|
(define (pretty str column)
|
||||||
(indented-string (fill-paragraph str (- (%text-width) 4)
|
(indented-string (fill-paragraph str (- (%text-width) 4)
|
||||||
column)
|
column)
|
||||||
4))
|
4))
|
||||||
|
|
||||||
|
(define list->enumeration
|
||||||
|
(if concise?
|
||||||
|
(lambda* (lst #:optional (max 12))
|
||||||
|
(if (> (length lst) max)
|
||||||
|
(string-append (string-join (take lst max) ", ")
|
||||||
|
", " (ellipsis))
|
||||||
|
(string-join lst ", ")))
|
||||||
|
(cut string-join <> ", ")))
|
||||||
|
|
||||||
(let-values (((new upgraded) (new/upgraded-packages alist1 alist2)))
|
(let-values (((new upgraded) (new/upgraded-packages alist1 alist2)))
|
||||||
(unless (and (null? new) (null? upgraded))
|
(unless (and (null? new) (null? upgraded))
|
||||||
(display heading))
|
(display heading))
|
||||||
|
@ -397,8 +415,7 @@ and ALIST2 differ, display HEADING upfront."
|
||||||
(format #t (N_ " ~h new package: ~a~%"
|
(format #t (N_ " ~h new package: ~a~%"
|
||||||
" ~h new packages: ~a~%" count)
|
" ~h new packages: ~a~%" count)
|
||||||
count
|
count
|
||||||
(pretty (string-join (sort (map first new) string<?)
|
(pretty (list->enumeration (sort (map first new) string<?))
|
||||||
", ")
|
|
||||||
30))))
|
30))))
|
||||||
(match (length upgraded)
|
(match (length upgraded)
|
||||||
(0 #t)
|
(0 #t)
|
||||||
|
@ -406,7 +423,7 @@ and ALIST2 differ, display HEADING upfront."
|
||||||
(format #t (N_ " ~h package upgraded: ~a~%"
|
(format #t (N_ " ~h package upgraded: ~a~%"
|
||||||
" ~h packages upgraded: ~a~%" count)
|
" ~h packages upgraded: ~a~%" count)
|
||||||
count
|
count
|
||||||
(pretty (string-join (sort upgraded string<?) ", ")
|
(pretty (list->enumeration (sort upgraded string<?))
|
||||||
35))))))
|
35))))))
|
||||||
|
|
||||||
(define (display-profile-content-diff profile gen1 gen2)
|
(define (display-profile-content-diff profile gen1 gen2)
|
||||||
|
|
Loading…
Reference in New Issue