all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Luis Felipe <sirgazil@zoho.com>
To: Ricardo Wurmus <rekado@elephly.net>, guix-devel@gnu.org
Subject: Re: Unhelpful "--help" output
Date: Tue, 12 Nov 2024 15:06:16 +0000	[thread overview]
Message-ID: <1bebc911-f73d-49e7-a4f2-8ce0b62498c6@zoho.com> (raw)
In-Reply-To: <877c98egqi.fsf@elephly.net>


[-- Attachment #1.1.1: Type: text/plain, Size: 6543 bytes --]

Hi Ricardo,

On 12/11/24 13:14, Ricardo Wurmus wrote:
> Hi Guix,
>
> I found the help output not to be very helpful whenever there are
> sub-commands.  The output contains options that are not relevant to the
> sub-command.  The options also don't appear to be ordered.
>
> Here is an example.  I want to know more about "guix system
> docker-image", so I run "guix system docker-image --help".  This is the
> output I get:
>
> --8<---------------cut here---------------start------------->8---
> Usage: guix system [OPTION ...] ACTION [ARG ...] [FILE]
> Build the operating system declared in FILE according to ACTION.
> Some ACTIONS support additional ARGS.
>
> The valid values for ACTION are:
>
>     search           search for existing service types
>     edit             edit the definition of an existing service type
>     reconfigure      switch to a new operating system configuration
>     roll-back        switch to the previous operating system configuration
>     describe         describe the current system
>     list-generations list the system generations
>     switch-generation switch to an existing operating system configuration
>     delete-generations delete old system generations
>     build            build the operating system without installing anything
>     container        build a container that shares the host's store
>     vm               build a virtual machine image that shares the host's store
>     image            build a Guix System image
>     docker-image     build a Docker image
>     init             initialize a root file system to run GNU
>     extension-graph  emit the service extension graph in Dot format
>     shepherd-graph   emit the graph of shepherd services in Dot format
>
>    -L, --load-path=DIR    prepend DIR to the package module search path
>    -K, --keep-failed      keep build tree of failed builds
>    -k, --keep-going       keep going when some of the derivations fail
>    -n, --dry-run          do not build the derivations
>        --fallback         fall back to building when the substituter fails
>        --no-substitutes   build instead of resorting to pre-built substitutes
>        --substitute-urls=URLS
>                           fetch substitute from URLS if they are authorized
>        --no-grafts        do not graft packages
>        --no-offload       do not attempt to offload builds
>        --max-silent-time=SECONDS
>                           mark the build as failed after SECONDS of silence
>        --timeout=SECONDS  mark the build as failed after SECONDS of activity
>        --rounds=N         build N times in a row to detect non-determinism
>    -c, --cores=N          allow the use of up to N CPU cores for the build
>    -M, --max-jobs=N       allow at most N build jobs
>        --debug=LEVEL      produce debugging output at LEVEL
>    -d, --derivation       return the derivation of the given system
>    -e, --expression=EXPR  consider the operating-system EXPR evaluates to
>                           instead of reading FILE, when applicable
>        --allow-downgrades for 'reconfigure', allow downgrades to earlier
>                           channel revisions
>        --on-error=STRATEGY
>                           apply STRATEGY (one of nothing-special, backtrace,
>                           or debug) when an error occurs while reading FILE
>        --list-image-types list available image types
>    -t, --image-type=TYPE  for 'image', produce an image of TYPE
>        --image-size=SIZE  for 'image', produce an image of SIZE
>        --no-bootloader    for 'init', do not install a bootloader
>        --volatile         for 'image', make the root file system volatile
>        --persistent       for 'vm', make the root file system persistent
>        --label=LABEL      for 'image', label disk image with LABEL
>        --save-provenance  save provenance information
>        --share=SPEC       for 'vm' and 'container', share host file system with
>                           read/write access according to SPEC
>        --expose=SPEC      for 'vm' and 'container', expose host file system
>                           directory as read-only according to SPEC
>    -N, --network          for 'container', allow containers to access the network
>    -r, --root=FILE        for 'vm', 'image', 'container' and 'build',
>                           make FILE a symlink to the result, and
>                           register it as a garbage collector root
>        --full-boot        for 'vm', make a full boot sequence
>        --no-graphic       for 'vm', use the tty that we are started in for IO
>        --skip-checks      skip file system and initrd module safety checks
>    -v, --verbosity=LEVEL  use the given verbosity LEVEL
>
>        --graph-backend=BACKEND
>                           use BACKEND for 'extension-graph' and 'shepherd-graph'
>
>    -I, --list-installed[=REGEXP]
>                           for 'describe' and 'list-generations', list installed
>                           packages matching REGEXP
>
>        --list-targets     list available targets
>        --target=TRIPLET   cross-build for TRIPLET--e.g., "aarch64-linux-gnu"
>
>        --list-systems     list available systems
>    -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., "i686-linux"
>
>        --help-docker-format list options specific to the docker image type.
>
>    -h, --help             display this help and exit
>    -V, --version          display version information and exit
>
> Report bugs to: bug-guix@gnu.org.
> GNU Guix home page: <https://guix.gnu.org>
> General help using Guix and GNU software: <https://guix.gnu.org/en/help/>
> --8<---------------cut here---------------end--------------->8---
>
> Note that this is the same output as for "guix system --help".
>
> I don't think it's great to see all these "for 'vm'" qualifiers on the
> right-hand side.
>
> Here is what I propose:
>
> - In the case of commands that offer sub-commands, remove *all* the
> options from the help output of the main command (e.g. "guix system
> --help"), and only showing the list of available sub-commands.
>
> - For "guix [command] [sub-command] --help" show only options to this
>    sub-command.
>
> - optionally, group all generic options (e.g. --system, --help,
>    --version, etc) under a single heading.
>
> What do you think?

That's the functionality I would expect, so +1



[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 2881 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

  parent reply	other threads:[~2024-11-12 15:06 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-12 13:14 Unhelpful "--help" output Ricardo Wurmus
2024-11-12 15:03 ` Suhail Singh
2024-11-12 15:06 ` Luis Felipe [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-11-12 16:23 Christopher Howard
2024-11-12 16:31 ` indieterminacy
2024-11-12 19:56   ` Christopher Howard
2024-11-13 18:17 ` Ricardo Wurmus
2024-11-13 22:35   ` Christopher Howard
2024-11-14 10:37     ` Ricardo Wurmus

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1bebc911-f73d-49e7-a4f2-8ce0b62498c6@zoho.com \
    --to=sirgazil@zoho.com \
    --cc=guix-devel@gnu.org \
    --cc=rekado@elephly.net \
    /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 external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.