3个版本
0.1.2 | 2020年3月16日 |
---|---|
0.1.1 | 2020年3月15日 |
0.1.0 | 2020年3月15日 |
#18 in #getopt
13KB
251 代码行
urgeopts:独立的clap包装器
urgeopts
是基于 clap 的 getopt
替代品。
urgeopts
从stdin读取选项描述符作为YAML文档,解析传递给它的参数,并打印出可由 eval
评估的结果。请参阅example.sh以了解具体用法。
配置示例
name: example
bin_name: $0
version: "1.0"
about: sample text
author: Fumiaki Kinoshita <[email protected]>
# Flags take no arguments.
# Number of occurences will be reported (e.g. verbose=1)
flags:
verbose:
help: verbose output
short: v
long: verbose
# Options arguments are collected as newline-separated list of values.
opts:
# usage syntax is also supported
# cf. https://docs.rs/clap/2.33.0/clap/struct.Arg.html#syntax
host: -h --host <HOST> 'host name'
mode:
long: mode
help: option with a certain set of possible values
possible_values: [ herbivore, carnivore, omnivore ]
# Positional arguments
args:
- name: cmd
help: command
required: true
- name: arg
help: command arguments
multiple: true
subcommands:
ls: #The name will be assigned to $subcommand
about: Display a list of entities
args:
- name: name
multiple: true
通常,您希望将配置嵌入到heredoc中,将所有参数传递给 urgeopts
并评估其输出
eval "$(urgeopts "$@" <<EOT
...
EOT
)"
注意
我故意没有使用 clap::App::from_yaml
,因为YAML表示通常冗余,并且难以诊断panic。
依赖关系
~1MB
~11K SLoC