#arguments-parser #command-line-arguments #commander #codebase #cli

cmder

适用于 Rust 代码库的简单、轻量级的命令行参数解析器

8 个不稳定版本 (3 个破坏性更新)

1.0.0-beta-12022 年 5 月 18 日
0.6.1 2022 年 5 月 24 日
0.5.2 2022 年 4 月 21 日
0.4.1 2022 年 4 月 17 日
0.1.0 2022 年 3 月 9 日

#465 in 命令行界面


2 crates 中使用

MIT 许可证

79KB
2K SLoC

适用于 Rust 代码库的简单、轻量级且可扩展的命令行参数解析器。

GitHub Workflow Status Crates.io Crates.io

此 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