From: "Ludovic Courtès" <ludo@gnu.org>
To: 37413@debbugs.gnu.org
Subject: [bug#37413] [PATCH 6/9] pull: Display channel news.
Date: Mon, 16 Sep 2019 00:21:03 +0200 [thread overview]
Message-ID: <20190915222106.4463-6-ludo@gnu.org> (raw)
In-Reply-To: <20190915222106.4463-1-ludo@gnu.org>
* guix/scripts/pull.scm (display-news-entry)
(display-channel-specific-news): New procedures.
(display-channel-news): Call it.
(display-new/upgraded-packages): Adjust hint message.
* doc/guix.texi (Invoking guix pull): Mention it.
---
doc/guix.texi | 11 +++++---
guix/scripts/pull.scm | 61 ++++++++++++++++++++++++++++++++++++++++---
2 files changed, 65 insertions(+), 7 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index c7fe9f3907..f6e5e919db 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3709,13 +3709,16 @@ Read the list of channels from @var{file} instead of
evaluates to a list of channel objects. @xref{Channels}, for more
information.
+@cindex channel news
@item --news
@itemx -N
-Display the list of packages added or upgraded since the previous generation.
+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}).
-This is the same information 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).
+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).
@item --list-generations[=@var{pattern}]
@itemx -l [@var{pattern}]
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index ca3b36f98c..8edff1a502 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -19,6 +19,7 @@
(define-module (guix scripts pull)
#:use-module (guix ui)
+ #:use-module (guix colors)
#:use-module (guix utils)
#:use-module ((guix status) #:select (with-status-verbosity))
#:use-module (guix scripts)
@@ -208,6 +209,48 @@ purposes."
;; Assume that the URL matters less than the name.
(eq? (channel-name channel1) (channel-name channel2)))
+(define (display-news-entry entry language port)
+ "Display ENTRY, a <channel-news-entry>, in LANGUAGE, a language code, to
+PORT."
+ (let ((title (channel-news-entry-title entry))
+ (body (channel-news-entry-body entry)))
+ (format port " ~a~%"
+ (highlight
+ (string-trim-right
+ (texi->plain-text (or (assoc-ref title language)
+ (assoc-ref title (%default-message-language))
+ "")))))
+ (format port (G_ " commit ~a~%")
+ (channel-news-entry-commit entry))
+ (newline port)
+ (format port " ~a~%"
+ (indented-string
+ (parameterize ((%text-width (- (%text-width) 4)))
+ (string-trim-right
+ (texi->plain-text (or (assoc-ref body language)
+ (assoc-ref body (%default-message-language))
+ ""))))
+ 4))))
+
+(define* (display-channel-specific-news new old
+ #:key (port (current-output-port)))
+ "Display channel news applicable the commits between OLD and NEW, where OLD
+and NEW are <channel> records with a proper 'commit' field."
+ (let ((channel new)
+ (old (channel-commit old))
+ (new (channel-commit new)))
+ (when (and old new)
+ (let ((language (current-message-language)))
+ (match (channel-news-for-commit channel new old)
+ (() ;no news is good news
+ #t)
+ ((entries ...)
+ (newline port)
+ (format port (G_ "News for channel '~a'~%")
+ (channel-name channel))
+ (for-each (cut display-news-entry <> language port) entries)
+ (newline port)))))))
+
(define (display-channel-news profile)
"Display new about the channels of PROFILE "
(define previous
@@ -238,7 +281,20 @@ purposes."
(N_ " ~*One channel removed:~%"
" ~a channels removed:~%" count)
count)
- (for-each display-channel removed)))))))))
+ (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))
+
+ (and old (list new old)))
+ new-channels)))))))
(define (display-news profile)
;; Display profile news, with the understanding that this process represents
@@ -506,8 +562,7 @@ display long package lists that would fill the user's screen."
(when (and concise?
(or (> new-count concise/max-item-count)
(> upgraded-count concise/max-item-count)))
- (display-hint (G_ "Run @command{guix pull --news} to view the complete
-list of package changes.")))))
+ (display-hint (G_ "Run @command{guix pull --news} to read all the news.")))))
(define (display-profile-content-diff profile gen1 gen2)
"Display the changes in PROFILE GEN2 compared to generation GEN1."
--
2.23.0
next prev parent reply other threads:[~2019-09-15 22:22 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-15 22:10 [bug#37413] [PATCH 0/9] Channel news distribution mechanism Ludovic Courtès
2019-09-15 22:20 ` [bug#37413] [PATCH 1/9] pull: '--news' shows the list of channels added or removed Ludovic Courtès
2019-09-15 22:20 ` [bug#37413] [PATCH 2/9] git: 'update-cached-checkout' avoids network access when unnecessary Ludovic Courtès
2019-09-15 22:21 ` [bug#37413] [PATCH 3/9] git: Add 'commit-difference' Ludovic Courtès
2019-09-15 22:21 ` [bug#37413] [PATCH 4/9] channels: Add support for a news file Ludovic Courtès
2019-09-15 22:21 ` [bug#37413] [PATCH 5/9] ui: Add 'current-message-language' Ludovic Courtès
2019-09-15 22:21 ` Ludovic Courtès [this message]
2019-09-15 22:21 ` [bug#37413] [PATCH 7/9] pull: '-l' displays channel news Ludovic Courtès
2019-09-15 22:21 ` [bug#37413] [PATCH 8/9] Add '.guix-channel' file Ludovic Courtès
2019-09-15 22:21 ` [bug#37413] [PATCH 9/9] DRAFT etc: Add channel news file Ludovic Courtès
2019-09-16 9:31 ` [bug#37413] [PATCH 0/9] Channel news distribution mechanism Ricardo Wurmus
2019-09-16 12:59 ` Ludovic Courtès
2019-09-16 13:16 ` Ricardo Wurmus
2019-09-16 15:10 ` Ludovic Courtès
2019-09-16 17:16 ` Ricardo Wurmus
2019-09-16 21:25 ` Ludovic Courtès
2019-09-16 21:49 ` Julien Lepiller
2019-09-16 22:52 ` pelzflorian (Florian Pelz)
2019-09-17 12:44 ` Ludovic Courtès
2019-09-17 13:33 ` pelzflorian (Florian Pelz)
2019-09-17 13:39 ` Ludovic Courtès
2019-09-17 14:28 ` pelzflorian (Florian Pelz)
2019-09-17 15:27 ` Ludovic Courtès
2019-09-17 17:41 ` pelzflorian (Florian Pelz)
2019-09-17 18:21 ` Julien Lepiller
2019-09-17 19:44 ` pelzflorian (Florian Pelz)
2019-09-17 22:02 ` pelzflorian (Florian Pelz)
2019-09-18 10:02 ` Ludovic Courtès
2019-09-18 11:49 ` pelzflorian (Florian Pelz)
2019-09-18 12:33 ` Ludovic Courtès
2019-09-18 9:12 ` Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 00/11] " Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 01/11] pull: '--news' shows the list of channels added or removed Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 02/11] git: 'update-cached-checkout' avoids network access when unnecessary Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 03/11] git: Add 'commit-difference' Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 04/11] channels: Add support for a news file Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 05/11] channels: Allow news entries to refer to a tag Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 06/11] ui: Add 'current-message-language' Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 07/11] pull: Display channel news Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 08/11] pull: '-l' displays " Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 09/11] pull: Display news titles directly upon 'pull' Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 10/11] Add '.guix-channel' file Ludovic Courtès
2019-09-21 21:12 ` [bug#37413] [PATCH v2 11/11] DRAFT etc: Add channel news file Ludovic Courtès
2019-09-22 11:14 ` pelzflorian (Florian Pelz)
2019-09-23 9:13 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190915222106.4463-6-ludo@gnu.org \
--to=ludo@gnu.org \
--cc=37413@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).