19 个版本

0.3.12 2020 年 11 月 1 日
0.3.11 2019 年 10 月 28 日
0.3.9 2019 年 6 月 16 日
0.3.6 2019 年 5 月 23 日
0.1.3 2019 年 1 月 26 日

#790命令行界面

MIT/Apache

27KB
549 代码行

cmdr   构建状态

Cmdr 是一个用于构建基于行的文本用户界面的库。 它允许你专注于编写命令的实现,同时它处理用户交互、解析等。

默认情况下,CMDR 给你:

  • 命令行解析
  • 命令历史记录
  • 帮助函数和可发现性
  • 自动完成(尚未实现)

要使用 CMDR,你将你的用户想要与之交互的命令作为函数写入一个或多个 Scope 类型上。通过实现 Scope 特性,cmdr 可以实现和执行你提供的命令。通过使用提供的 cmdr 宏并对你的命令使用 cmd 注解来提供有用的元数据,实现 Scope 特性非常简单。你的命令中的文档字符串将被自动捕获并用作帮助文本。

use cmdr::*;

/// Example scope that implements two commands, greet and quit
struct GreeterScope {}

#[cmdr]
impl GreeterScope {
    /// Cmdr command to greet someone. Takes one parameter and prints a greeting
    #[cmd]
    fn greet(&self, args: &[String]) -> CommandResult {
        println!("Hello {}", args[0]);
        Ok(Action::Done)
    }

    /// Cmdr command to quit the application by returning CommandResult::Quit
    #[cmd]
    fn quit(&self, _args: &[String]) -> CommandResult {
        println!("Quitting");
        Ok(Action::Quit)
    }
}

/// Main function that creates the scope and starts a command loop for it
fn main() -> cmdr::Result<()> {
    cmd_loop(&mut GreeterScope {})?;
    Ok(())
}

更多信息

版本:0.3.11

许可证

根据以下其中一项许可:

任选其一。

贡献

除非你明确说明,否则根据 Apache-2.0 许可证定义,你有意提交的任何贡献,包括在本工作中包含的贡献,都将根据上述内容双重许可,不附加任何额外条款或条件。

依赖

~5.5MB
~106K SLoC