Subject: "guix upgrade" and "guix package -u ." inconsistency

From: Brendan Tildesley <[email-masked]>
Date: Tue, 6 Apr 2021 13:20:01 +0200 (CEST)

Below, --do-not-upgrade appears to be behaving like "--only-upgrade". I realised
this comes about because I didn't use '='. guix upgrade takes all other
arguments to be upgrade regex's, but it still seems. _wrong_.  Some long
arguments in guix require and = sign after them, and the cli help indicates as
much, but --do-not-upgrade seems to break that pattern and takes all arguments
after it to be regexes's to match and not upgrade.  flags that have this
behaviour of acting on all arguments after them should indicate clearly they do
that. and indicated if the '=' is optional using some intuitive notation.
The line:

--do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP

suggest it must take either no argument or only '=something'.

guix upgrade --help says that it is an alias for 'guix package -u .'. My
understanding is that the meaning of alias is something that can be substituted
and it will behave the same, like Bash aliases.  We should change 'guix
upgrade''s behaviour to be like 'guix package -u', taking all arguments after
--do-not-upgrade as regex's to not upgrade.

b@jiu ~/code/guix [env]$ guix upgrade --do-not-upgrade '^[a-n]'
The following packages will be upgraded:
audacity          (dependencies or package changed)
cool-retro-term   (dependencies or package changed)
deluge            (dependencies or package changed)
diffoscope        170 → 171
emacs             (dependencies or package changed)
eog               (dependencies or package changed)
evince            (dependencies or package changed)
ffmpeg            (dependencies or package changed)
git               2.31.0 → 2.31.1
git:send-email    2.31.0 → 2.31.1
gnome-font-viewer (dependencies or package changed)
gnome-tweaks      (dependencies or package changed)
godot             (dependencies or package changed)
ibus              (dependencies or package changed)
ibus-anthy        (dependencies or package changed)
icecat            (dependencies or package changed)
keepassxc         (dependencies or package changed)
lm-sensors        (dependencies or package changed)
lollypop          (dependencies or package changed)
mpv               (dependencies or package changed)
mumble            (dependencies or package changed)

62.6 MB will be downloaded
^C
b@jiu ~/code/guix [env]$ guix package -u . --do-not-upgrade '^[a-n]'
The following packages will be upgraded:
obs                (dependencies or package changed)
piper              (dependencies or package changed)
playonlinux        (dependencies or package changed)
rhythmbox          (dependencies or package changed)
stellarium         (dependencies or package changed)
syncthing-gtk      (dependencies or package changed)
tinc               (dependencies or package changed)
transmission:gui   (dependencies or package changed)
ungoogled-chromium (dependencies or package changed)
vlc                (dependencies or package changed)
youtube-dl         (dependencies or package changed)
zrythm             (dependencies or package changed)

The following derivation will be built:
/gnu/store/6ldzv7ilcsg4ah8vyig9vyh9y79yz6m1-tinc-1.1pre17.drv