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 在 命令行界面
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 版(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确说明,否则根据 Apache-2.0 许可证定义,你有意提交的任何贡献,包括在本工作中包含的贡献,都将根据上述内容双重许可,不附加任何额外条款或条件。
依赖
~5.5MB
~106K SLoC