13 个版本
0.1.13 | 2024年2月16日 |
---|---|
0.1.12 | 2023年9月29日 |
0.1.6 | 2023年8月22日 |
0.1.0 | 2023年7月19日 |
#780 in 命令行工具
30KB
777 行
cli-rs
🚧 wip 🚧
一个帮助您快速编写表达式的 CLI 库。从头开始构建,考虑了像 动态补全 这样的高级功能。
Command::name("lockbook")
.subcommand(
Command::name("edit")
.input(Arg::new("target"))
.handler(|target: Arg<String>| println!("editing target file: {}", target.get())),
)
.parse();
指定常用的复杂参数
let docs = Arg::<Uuid>::new("target-file")
.description("A uuid or path of a lockbook document")
.parser(|str| {...})
.completions(|current_str, cursor_loc| {...});
cli-rs 将自动生成上下文相关的帮助消息和手册页。cli-rs 还将为每个 shell 生成一个微小的补全过程文件,该文件将调用您的 CLI,将尽可能多的补全逻辑移动到 Rust 中。
规范
command_path --flags positional_args --flags positional_args
现在的事情
- 参数都是必需的,必须按顺序提供
- 标志始终是可选的(必须实现默认值)并且可以不按顺序提供
- 非布尔值的标志遵循形式
--key=value
- 布尔值的标志解析为
--key
、--key=false
或-k
- 一个命令可以有子命令或参数和标志,但不能两者都有
以后的事情
- 支持
--key value
- 可以为标志值定义环境变量(cli 指定值,环境变量回退,然后 Default::default())
- 子命令继承任何标志作为自己的标志
- 此外,所有布尔标志都可以分组,例如
-rf
- 列出参数(支持可选参数)
- 在运行时检测无效配置
依赖项
~0.4–10MB
~71K SLoC