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

MIT许可证

9KB
142

clap4shell:独立clap包装器,适用于shell脚本

clap4shell at crates.io

clap4shell是基于clapgetopt替代品。

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