5个不稳定版本
0.3.2 | 2022年10月5日 |
---|---|
0.3.1 | 2022年9月5日 |
0.3.0 | 2022年8月28日 |
0.2.0 | 2022年8月24日 |
0.1.3 | 2022年8月24日 |
在命令行界面中排名第994
9KB
142 行
clap4shell:独立clap包装器,适用于shell脚本
clap4shell
是基于clap的getopt
替代品。
clap4shell
从stdin接收选项描述符作为YAML文档,然后以换行符分隔的key=value
格式打印解析结果,这些结果可以被eval
评估。请参阅example.sh以获取具体用法。
安装
nix profile install github:fumieval/clap4shell
用法
配置如下
name: example
bin_name: $(basename $0)
version: "0.0"
about: sample text
author: Fumiaki Kinoshita <[email protected]>
args:
- verbose:
help: verbose output
short: v
long: verbose
- host:
takes_value: true
long: host
value_name: <HOST>
help: 'host name'
- mode:
long: mode
help: option with a certain set of possible values
possible_values: [ herbivore, carnivore, omnivore ]
- cmd:
help: command
- arg:
help: command arguments
multiple_values: true
该模式基于clap_serde。
典型用法是将选项定义嵌入shell heredoc中,将所有参数传递给clap4shell
并评估其输出
eval "$(clap4shell "$@" <<EOT
...
EOT
)"
自动完成
clap4shell-completion <shell> -o <path>
子命令生成一个自动完成脚本,并将其写入path
。
clap4shell clap4shell-completion bash -o ./bash-completion.sh < definition.yaml
当省略"-o"时,它将打印一个echo命令,该命令打印脚本,然后是exit 0
。因此,即使在将clap4shell
的输出传递给eval
的情况下,此功能也可以透明地使用。
./foo.sh clap4shell-completion > ~/.zsh/_foo.sh
注意
我故意避免使用clap::App::from_yaml
,因为YAML表示的冗余和调试panic的困难。YAML接口正在被弃用:https://github.com/clap-rs/clap/issues/3087
依赖项
~3.5MB
~74K SLoC