argparsh 1.0.4

Better argument parsing for shells
#!/usr/bin/env fish

# Create a parser program
set parser (
  argparsh new (status filename) -d "argparsh example" -e "bye!"
  argparsh add_arg \
    -c a -c b -c c \
    --helptext "single letter arg" \
    -- "a"
  argparsh add_arg --type int --default 10 -- "-i" "--interval"
  argparsh add_arg --action store_true -- "-f"

  argparsh add_subparser foobar --required
  argparsh add_subcommand foo
  argparsh add_subcommand bar

  argparsh add_arg --subcommand foo "qux"
  argparsh add_arg --subcommand bar "baz"
)


set args_json (argparsh parse $parser --format json -- $argv)
# One could extract the arguments from the json object here using jq,
# or some other utility. Another option is using the bass plugin to translate
# and execute the output with "--format shell".
# Of course, fish has an argparse utility built-in, and the point of this
# example is to show that argparsh can be run anywhere you can execute a child
# process, and doesn't rely on the shell for much.
echo $args_json | jq
echo "foobar =" (echo $args_json | jq .foobar)