mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
pull: '--news' no longer shows package lists.
* guix/scripts/pull.scm (display-channel-news): Return #t when news were displayed. (display-news): Add #:profile-news? parameter and honor it. Print something there were no news. (process-query): For 'display-news', call 'display-channel-news' directly. * doc/guix.texi (Invoking guix pull): Adjust accordingly.
This commit is contained in:
parent
85a5110de7
commit
bc8bea1739
2 changed files with 76 additions and 61 deletions
|
@ -4486,13 +4486,13 @@ information.
|
|||
@cindex channel news
|
||||
@item --news
|
||||
@itemx -N
|
||||
Display the list of packages added or upgraded since the previous
|
||||
generation, as well as, occasionally, news written by channel authors
|
||||
for their users (@pxref{Channels, Writing Channel News}).
|
||||
Display news written by channel authors for their users for changes made
|
||||
since the previous generation (@pxref{Channels, Writing Channel News}).
|
||||
When @option{--details} is passed, additionally display new and upgraded
|
||||
packages.
|
||||
|
||||
The package information is the same as displayed upon @command{guix
|
||||
pull} completion, but without ellipses; it is also similar to the output
|
||||
of @command{guix pull -l} for the last generation (see below).
|
||||
You can view that information for previous generations with
|
||||
@command{guix pull -l}.
|
||||
|
||||
@item --list-generations[=@var{pattern}]
|
||||
@itemx -l [@var{pattern}]
|
||||
|
@ -4507,8 +4507,9 @@ revision as well as the corresponding news entries. If you pass
|
|||
upgraded in each generation compared to the previous one.
|
||||
|
||||
@item --details
|
||||
Instruct @option{--list-generations} to display more information about
|
||||
the differences between subsequent generations---see above.
|
||||
Instruct @option{--list-generations} or @option{--news} to display more
|
||||
information about the differences between subsequent generations---see
|
||||
above.
|
||||
|
||||
@item --roll-back
|
||||
@cindex rolling back
|
||||
|
|
|
@ -143,14 +143,10 @@ (define %options
|
|||
(option '("details") #f #f
|
||||
(lambda (opt name arg result)
|
||||
(alist-cons 'details? #t
|
||||
(match (find (match-lambda
|
||||
(('query 'list-generations _)
|
||||
#t)
|
||||
(_ #f))
|
||||
result)
|
||||
(#t result)
|
||||
(#f (cons `(query list-generations #f)
|
||||
result))))))
|
||||
(if (assoc-ref result 'query)
|
||||
result
|
||||
(cons `(query list-generations #f)
|
||||
result)))))
|
||||
(option '("roll-back") #f #f
|
||||
(lambda (opt name arg result)
|
||||
(cons '(generation roll-back)
|
||||
|
@ -165,7 +161,8 @@ (define %options
|
|||
result)))
|
||||
(option '(#\N "news") #f #f
|
||||
(lambda (opt name arg result)
|
||||
(cons '(query display-news) result)))
|
||||
(cons '(query display-news)
|
||||
(alist-delete 'query result))))
|
||||
(option '("url") #t #f
|
||||
(lambda (opt name arg result)
|
||||
(alist-cons 'repository-url arg
|
||||
|
@ -352,45 +349,48 @@ (define* (display-channel-news profile
|
|||
(previous
|
||||
(and=> (relative-generation profile -1)
|
||||
(cut generation-file-name profile <>))))
|
||||
"Display news about the channels of PROFILE compared to PREVIOUS."
|
||||
(when previous
|
||||
(let ((old-channels (profile-channels previous))
|
||||
(new-channels (profile-channels profile)))
|
||||
(and (pair? old-channels) (pair? new-channels)
|
||||
(begin
|
||||
(match (lset-difference channel=? new-channels old-channels)
|
||||
(()
|
||||
#t)
|
||||
(new
|
||||
(let ((count (length new)))
|
||||
(format (current-error-port)
|
||||
(N_ " ~a new channel:~%"
|
||||
" ~a new channels:~%" count)
|
||||
count)
|
||||
(for-each display-channel new))))
|
||||
(match (lset-difference channel=? old-channels new-channels)
|
||||
(()
|
||||
#t)
|
||||
(removed
|
||||
(let ((count (length removed)))
|
||||
(format (current-error-port)
|
||||
(N_ " ~a channel removed:~%"
|
||||
" ~a channels removed:~%" count)
|
||||
count)
|
||||
(for-each display-channel removed))))
|
||||
"Display news about the channels of PROFILE compared to PREVIOUS. Return
|
||||
true if news were displayed, false otherwise."
|
||||
(and previous
|
||||
(let ((old-channels (profile-channels previous))
|
||||
(new-channels (profile-channels profile)))
|
||||
(and (pair? old-channels) (pair? new-channels)
|
||||
(begin
|
||||
(match (lset-difference channel=? new-channels old-channels)
|
||||
(()
|
||||
#t)
|
||||
(new
|
||||
(let ((count (length new)))
|
||||
(format (current-error-port)
|
||||
(N_ " ~a new channel:~%"
|
||||
" ~a new channels:~%" count)
|
||||
count)
|
||||
(for-each display-channel new))))
|
||||
(match (lset-difference channel=? old-channels new-channels)
|
||||
(()
|
||||
#t)
|
||||
(removed
|
||||
(let ((count (length removed)))
|
||||
(format (current-error-port)
|
||||
(N_ " ~a channel removed:~%"
|
||||
" ~a channels removed:~%" count)
|
||||
count)
|
||||
(for-each display-channel removed))))
|
||||
|
||||
;; Display channel-specific news for those channels that were
|
||||
;; here before and are still around afterwards.
|
||||
(for-each (match-lambda
|
||||
((new old)
|
||||
(display-channel-specific-news new old)))
|
||||
(filter-map (lambda (new)
|
||||
(define old
|
||||
(find (cut channel=? new <>)
|
||||
old-channels))
|
||||
;; Display channel-specific news for those channels that were
|
||||
;; here before and are still around afterwards.
|
||||
(fold (match-lambda*
|
||||
(((new old) news?)
|
||||
(or (display-channel-specific-news new old)
|
||||
news?)))
|
||||
#f
|
||||
(filter-map (lambda (new)
|
||||
(define old
|
||||
(find (cut channel=? new <>)
|
||||
old-channels))
|
||||
|
||||
(and old (list new old)))
|
||||
new-channels)))))))
|
||||
(and old (list new old)))
|
||||
new-channels)))))))
|
||||
|
||||
(define* (display-channel-news-headlines profile)
|
||||
"Display the titles of news about the channels of PROFILE compared to its
|
||||
|
@ -421,13 +421,26 @@ (define more?
|
|||
|
||||
(any ->bool more?))))))
|
||||
|
||||
(define (display-news profile)
|
||||
;; Display profile news, with the understanding that this process represents
|
||||
;; the newest generation.
|
||||
(display-profile-news profile
|
||||
#:current-is-newer? #t)
|
||||
(define* (display-news profile #:key (profile-news? #f))
|
||||
"Display channel news for PROFILE compared to its previous generation. When
|
||||
PROFILE-NEWS? is true, display the list of added/upgraded packages since the
|
||||
previous generation."
|
||||
(define previous
|
||||
(relative-generation profile -1))
|
||||
|
||||
(display-channel-news profile))
|
||||
(if previous
|
||||
(begin
|
||||
(when profile-news?
|
||||
(display-profile-news profile
|
||||
#:current-is-newer? #t))
|
||||
|
||||
(unless (display-channel-news profile
|
||||
(generation-file-name profile previous))
|
||||
(info (G_ "no channel news since generation ~a~%") previous)
|
||||
(display-hint (G_ "Run @command{guix pull -l} to view the
|
||||
news for earlier generations."))))
|
||||
(leave (G_ "profile ~a does not have a previous generation~%")
|
||||
profile)))
|
||||
|
||||
(define* (build-and-install instances profile)
|
||||
"Build the tool from SOURCE, and install it in PROFILE. When DRY-RUN? is
|
||||
|
@ -698,7 +711,8 @@ (define (list-generations profile numbers)
|
|||
(lambda ()
|
||||
(list-generations profile numbers))))))))))
|
||||
(('display-news)
|
||||
(display-news profile))))
|
||||
(display-news profile
|
||||
#:profile-news? (assoc-ref opts 'details?)))))
|
||||
|
||||
(define (process-generation-change opts profile)
|
||||
"Process a request to change the current generation (roll-back, switch, delete)."
|
||||
|
|
Loading…
Reference in a new issue