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 命令行界面

Download history 13/week @ 2024-03-09 5/week @ 2024-03-16 1/week @ 2024-03-23 16/week @ 2024-03-30 6/week @ 2024-04-06 4/week @ 2024-04-20 2/week @ 2024-04-27

每月253次 下载
2 crates 中使用

MIT 许可

355KB
10K SLoC

combu

crates.io version license

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 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

示例

单个(命令有标志,但没有子命令)

多个(有子命令)

灵感

待办事项(或待实现的功能)

  • 简化文档注释(具体时间未定)
  • 必要的测试实现(command.rs 已完成,完成时间未定)
  • 命令构建的预设实现(主要预设实现已完成,可能存在其他实现)

贡献指南

如果您想为 combu 贡献代码,请阅读 CONTRIBUTING.md 检查我们的行为准则,并向我们提交 pull request。

作者(们)

suquiya.

README 贡献:ksk001100此 pull request 中做出了贡献。

许可协议

本作品受 MIT 许可协议 保护

关于此 README.md 构建的说明

此 README 主要基于 seahorse 的 README - 版权所有 (c) 2019 Keisuke Toyota - 受 MIT 许可协议 许可。

无运行时依赖