91 个版本 (25 个稳定版)
1.1.23 | 2022年10月5日 |
---|---|
1.1.21 | 2022年9月15日 |
1.1.15 | 2022年6月5日 |
0.11.2 | 2022年4月23日 |
0.0.3 | 2020年3月29日 |
#73 in 命令行界面
每月253次 下载
在 2 crates 中使用
355KB
10K SLoC
combu
combu 是一个可定制的(或者说更像是骨架...?)CLI 框架。库名 "combu" 来自 "command" + "昆布"(日语中意为海带)。
combu 没有依赖项(或者仅依赖于 std 库)。Crate.io 的页面在这里 这里。
combu(command + 昆布)是一个旨在灵活构建 CLI 的框架,可进行定制(或者说更像是有骨架...?)。(之前有一个临时的克雷特名称为 cmb,但现在为 combu)
特性(特点)
- Unix 格式下的标志解析
- 可嵌套的子命令
- 无依赖项;combu 仅依赖于 std 库
- 类型化标志:Bool、String、Int 和 Float,灵感来自 seahorse
- 设置常用标志和局部标志
- 在子命令参数之前解析标志
- 可以重用以进行解析等操作的特定结构的设置
- 在需要创建类似 CLI 框架时可以使用的一些组件
- 有用的预设(命令、标志等)
- 将运行结果作为 Result< ActionResult, ActionError > 返回
文档
将 Combu 集成到项目中(使用方法)
Combu 存在于 crates.io 上。您可以使用(或导入)此 crate,就像其他存在于 crates.io 上的 crate 一样。
由于 combu 已注册在 crates.io 上,因此您可以使用(或导入)它,就像其他 crates.io 上的 crate 一样。
手动编辑 cargo.toml
添加
combu="[version you want to use]"
到 cargo.toml。
使用上述代码指定版本,并将其添加到 cargo.toml 中。
使用 cargo-edit(推荐)
如果您已安装 cargo-edit,请在目标项目下执行以下命令
cargo add combu
如果您已安装 cargo-edit,则可以通过执行上述命令来使用它。
快速入门
use combu::command::presets::func::help_tablize_with_alias_dedup;
use combu::{action_result, check_error, check_help, done, preset_root, Command};
use combu::{Context, Flag};
use std::env;
fn main() {
let _r = preset_root!(act)
.usage(env!("CARGO_PKG_NAME").to_string() + " [args]")
.common_flag(
Flag::new_bool("help")
.short_alias('h')
.description("show help"),
)
.local_flag(
Flag::new_bool("local")
.short_alias('l')
.description("local flag"),
)
.run_from_args(env::args().collect());
}
fn act(cmd: Command, c: Context) -> action_result!()
{
check_error!(cmd, c);
check_help!(cmd, c, help_tablize_with_alias_dedup);
println!("Hello, combu - {:?}", c.args);
done!()
}
如果您想运行快速入门示例,请执行
cargo run --example quick_start
cargo run --example quick_start --help
更多信息:请参阅 quick_start.rs
示例
单个(命令有标志,但没有子命令)
多个(有子命令)
灵感
- cobra (Golang 包用于创建命令行界面)
- seahorse (使用 Rust 编写的最小化 CLI 框架)
- clap(Rust 库用于创建命令行界面)
待办事项(或待实现的功能)
- 简化文档注释(具体时间未定)
- 必要的测试实现(
command.rs
已完成,完成时间未定) - 命令构建的预设实现(主要预设实现已完成,可能存在其他实现)
贡献指南
如果您想为 combu 贡献代码,请阅读 CONTRIBUTING.md 检查我们的行为准则,并向我们提交 pull request。
作者(们)
README 贡献:ksk001100 在 此 pull request 中做出了贡献。
许可协议
本作品受 MIT 许可协议 保护
关于此 README.md 构建的说明
此 README 主要基于 seahorse 的 README - 版权所有 (c) 2019 Keisuke Toyota - 受 MIT 许可协议 许可。