unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Unhelpful "--help" output
@ 2024-11-12 13:14 Ricardo Wurmus
  2024-11-12 15:03 ` Suhail Singh
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2024-11-12 13:14 UTC (permalink / raw)
  To: guix-devel

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?

-- 
Ricardo


^ permalink raw reply	[flat|nested] 10+ messages in thread
* Re: Unhelpful "--help" output
@ 2024-11-12 16:23 Christopher Howard
  2024-11-12 16:31 ` indieterminacy
  2024-11-13 18:17 ` Ricardo Wurmus
  0 siblings, 2 replies; 10+ messages in thread
From: Christopher Howard @ 2024-11-12 16:23 UTC (permalink / raw)
  To: Luis Felipe; +Cc: Ricardo Wurmus, guix-devel

Hi, if planning to make changes to --help output, could you please try to preserve the output formatting as much as possible? I'm trying to fix the bitrot in the emacs-guix "shell commands" code, which actually parses the --help output using regexs, and and generates magit-popup menus based on that. So little things like the number of spaces on the line before the command name actually matter.

-- 
Christopher Howard


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-12-10 16:50 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-12 13:14 Unhelpful "--help" output Ricardo Wurmus
2024-11-12 15:03 ` Suhail Singh
2024-11-12 15:06 ` Luis Felipe
2024-12-10 16:44 ` Simon Tournier
  -- 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

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).