8 个不稳定版本 (3 个破坏性更新)
1.0.0-beta-1 | 2022 年 5 月 18 日 |
---|---|
0.6.1 | 2022 年 5 月 24 日 |
0.5.2 | 2022 年 4 月 21 日 |
0.4.1 | 2022 年 4 月 17 日 |
0.1.0 |
|
#465 in 命令行界面
在 2 crates 中使用
79KB
2K SLoC
适用于 Rust 代码库的简单、轻量级且可扩展的命令行参数解析器。
此 crate 旨在为您提供易于使用且可扩展的 API,同时不会牺牲 Rust 代码库所期望的速度和性能。构建器接口的语法可归因于 JavaScript 包 commander-js
。要开始使用,请创建程序的新实例,并按如下所示进行操作。
基本示例
以下是一个基本示例,说明如何使用此 crate。更详细的文档可以在 docs.rs 或 GitHub 仓库中找到。
let mut program = Program::new();
program
.version("0.1.0")
.description("An example CLI")
.author("Author's name");
program
.subcommand("test")
.argument("<app-name>", "Pass the name of the app to test")
.alias("t")
.description("A test command")
.option("-s --skip", "Skip checking/installing the dependencies")
.option("-p --priority", "The priority to use when testing apps")
.action(|matches| { dbg!(matches); });
// ...
program.parse();
使用事件监听器扩展功能
可以通过使用事件监听器轻松扩展或覆盖程序的基本行为。查看文档以了解程序的所有可能事件。
//...
program.on(Event::OutputVersion, |config|{
let prog_ref = config.get_program();
println!("Current program version is: {}", prog_ref.get_version());
});
program.after_help(|config|{
let prog_ref = config.get_program();
println!("This program was authored by: {}", prog_ref.get_author());
});
program.before_all(|config|{
println!("An Aram Mojtabai banger!!!😂")
});
// ...
配置程序设置
修改设置以控制程序的行为。请参阅文档以了解所有可能的配置设置。
// ...
program.set(Setting::ShowHelpOnAllErrors(true));
program.set(Setting::ChoosePredefinedTheme(PredefinedThemes::Colorful));
program.set(Setting::SetProgramPattern(Pattern::Legacy));
program.set(Setting::OverrideAllDefaultListeners(true));
// ...
自定义主题和模式
您可以定义自己的颜色调色板,用于在打印到 std_out 时使用。您还可以通过使用模式来控制信息打印的方式。
// ...
use Color::*;
program.set(Setting::DefineCustomTheme(construct_theme!(
Green, Magenta, Blue, Red, White
)));
// ...
请参阅 docs.rs 以获取关于此 crate 的完整文档。还可以查看 GitHub 上的仓库,以获取 crate 使用示例 此处。如果您觉得这个 crate 有用,请考虑 star 此仓库。
贡献
无论您是否有一个用于创建新预定义主题的出色调色板,还是您希望在 examples/ 目录中添加新的用例,或者您有一个可以改进 crate 的更改,所有贡献都受欢迎并备受赞赏!
依赖项
~0–7.5MB
~43K SLoC