carapace-sh/carapace

traverse: collect context information about args

rsteube opened this issue · 1 comments

Request

Since traverse already iterates over the arguments and identifies them this should be stored and optionally returned.

Proposed solution

Provide an array of context information:

  • value of the arg
  • name of flag/subcommand
  • desctiption of flag/subcommand
  • type (flag type | argument type | command)
  • optarg (embed the same if it is an optarg)

Anything else?

gh issue --repo rsteube/carapace list --label enhancement --state open --web

Could be visualized like:

gh # GitHub CLI
issue # Manage issues
  --repo rsteube/carapace # Select another repository using the `[HOST/]OWNER/REPO` format
list #  List issues in a repository
  --label enhancement # Filter by label
  --state open # Filter by state: {open|closed|all}
  --web # List issues in the web browser

Flag chains could pose an issue. Might be more helpful to destructure the arguments (and even prefer the longhand for flags?).

ls -lha /tmp
exa # a modern replacement for ls
  -l # display extended file metadata as a table
  -h # add a header row to each column
  -a # show hidden and 'dot' files
  /tmp