[bug#53909,0/4] 'guix pull -l' no longer displays package lists by default

Message ID 20220209221237.8549-1-ludo@gnu.org
Headers
Series 'guix pull -l' no longer displays package lists by default |

Message

Ludovic Courtès Feb. 9, 2022, 10:12 p.m. UTC
Hi!

The other day on IRC zimoun noted that ‘guix pull -l’ doesn’t work for
them because it prints those long package lists, which incidentally
makes it slower.

This series changes ‘guix pull -l’ so that by default it only prints
channel info and news:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix pull -l
Generation 192       Oct 25 2021 00:12:47
  guix b5f45a2
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: b5f45a21c27b80210753e184e52708bb75a347bb
Generation 193       Oct 25 2021 21:29:18
  guix b0735c7
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: b0735c79b0d1d34117ec36d5dc5f14a3f9392bc1

News for channel 'guix'
  New `guix shell' command supersedes `guix environment'
    commit 746584e0ca200e7bf51b139ceb36c19ea81d6ef1

    A new `guix shell' command is now available.  It is similar to `guix environment', but with a
    more convenient interface (`guix environment' is deprecated but will remain available until
    May, 1st 2023).  The main difference compared to `guix environment' is that the "ad hoc" mode
    is the default.  Thus, to create an interactive environment containing Python, NumPy, and
    SciPy, you would run:
    
         guix shell python python-numpy python-scipy
    
    To get a development environment for, say, Inkscape, pass the `-D' flag:
    
         guix shell -D inkscape
    
    Another difference is that running `guix shell' without arguments loads `manifest.scm' or
    `guix.scm' for the current directory or an ancestor, provided you allowed it.  The command
    maintains a cache to speed up access to such environments.
    
    Run `info "(guix) Invoking guix shell"' for more information.

Generation 194       Nov 07 2021 23:40:30
  guix bd41e59
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: bd41e590dd24e54797fb8b6854c244efd4d12df5
--8<---------------cut here---------------end--------------->8---

One can pass ‘--details’ to get view new/upgraded packages:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix pull --detail -l
Generation 192       Oct 25 2021 00:12:47
  guix b5f45a2
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: b5f45a21c27b80210753e184e52708bb75a347bb
Generation 193       Oct 25 2021 21:29:18
  guix b0735c7
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: b0735c79b0d1d34117ec36d5dc5f14a3f9392bc1
  3 new packages: lttng-tools, vim-gitgutter, vim-mucomplete
  7 packages upgraded: flatpak@1.12.1, libportal@0.4, mspdebug@0.25-0.4c4d94e,
    p11-kit@0.24.0, reprotest@0.7.18, xdg-desktop-portal-gtk@1.10.0, xdg-desktop-portal@1.10.1

News for channel 'guix'
  New `guix shell' command supersedes `guix environment'
--8<---------------cut here---------------end--------------->8---

Last, ‘guix pull -l’ pipes its output to $PAGER by default.

Thoughts?

Ludo’.

Ludovic Courtès (4):
  pull: '--list-generations' doesn't list package changes by default.
  ui: 'with-paginated-output-port' gives access to the wrapped port.
  ui: 'display-generation' uses color when talking to a pager.
  pull: '--list-generations' pipes its output to the pager.

 doc/guix.texi         | 15 +++++++++------
 guix/scripts/pull.scm | 35 +++++++++++++++++++++++++++--------
 guix/ui.scm           | 24 ++++++++++++++++++++++--
 3 files changed, 58 insertions(+), 16 deletions(-)
  

Comments

Simon Tournier Feb. 10, 2022, 5:51 p.m. UTC | #1
Hi Ludo,


On Wed, 09 Feb 2022 at 23:12, Ludovic Courtès <ludo@gnu.org> wrote:

> The other day on IRC zimoun noted that ‘guix pull -l’ doesn’t work for
> them because it prints those long package lists, which incidentally
> makes it slower.

My remark is based on the rate of changes.  Let assume that regular
users "pull" once a week – I even guess it is less frequent than that.

Here the number of additions this user would see for the last 10 weeks:

--8<---------------cut here---------------start------------->8---
$ for i in $(seq 10); do git log --after="$(($i + 1)) week ago" --before="$i week ago" --oneline | grep Add | wc -l; done
108
59
84
149
76
212
48
83
46
63
--8<---------------cut here---------------end--------------->8---

And for Update, it reads:

--8<---------------cut here---------------start------------->8---
106
115
103
247
261
134
167
99
100
145
--8<---------------cut here---------------end--------------->8---

Therefore, the current display of “guix pull -l” is not human readable.


> $ ./pre-inst-env guix pull --details -l

Note it hits bug#50472 [1].  Other said,

    guix pull -l --details

does not work as expected.

1:<http://issues.guix.gnu.org/issue/50472



> Ludovic Courtès (4):
>   pull: '--list-generations' doesn't list package changes by default.
>   ui: 'with-paginated-output-port' gives access to the wrapped port.
>   ui: 'display-generation' uses color when talking to a pager.
>   pull: '--list-generations' pipes its output to the pager.

Well, I am mainly running CLI with Emacs ’M-x shell’, so Emacs is my
pager. :-)  However, I have tried with xterm and PAGER=less, nothing is
different.  Do I miss something?



Cheers,
simon
  
Ludovic Courtès Feb. 14, 2022, 12:56 p.m. UTC | #2
Hi!

zimoun <zimon.toutoune@gmail.com> skribis:

> On Wed, 09 Feb 2022 at 23:12, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> The other day on IRC zimoun noted that ‘guix pull -l’ doesn’t work for
>> them because it prints those long package lists, which incidentally
>> makes it slower.
>
> My remark is based on the rate of changes.  Let assume that regular
> users "pull" once a week – I even guess it is less frequent than that.
>
> Here the number of additions this user would see for the last 10 weeks:

[...]

> Therefore, the current display of “guix pull -l” is not human readable.

Yeah, though it’s searchable in $PAGER.

>> $ ./pre-inst-env guix pull --details -l
>
> Note it hits bug#50472 [1].  Other said,
>
>     guix pull -l --details
>
> does not work as expected.
>
> 1:<http://issues.guix.gnu.org/issue/50472

Right.

>> Ludovic Courtès (4):
>>   pull: '--list-generations' doesn't list package changes by default.
>>   ui: 'with-paginated-output-port' gives access to the wrapped port.
>>   ui: 'display-generation' uses color when talking to a pager.
>>   pull: '--list-generations' pipes its output to the pager.
>
> Well, I am mainly running CLI with Emacs ’M-x shell’, so Emacs is my
> pager. :-)  However, I have tried with xterm and PAGER=less, nothing is
> different.  Do I miss something?

The output gets piped to the pager now, which wasn’t the case before (I
tested in xterm FWIW).

Thanks,
Ludo’.