#cli-command #executable #binary #library

medusa

使用 Rust 构建命令行界面 (CLI) 的一般模板(由 Rust 编写)

6 个版本

0.3.0 2020 年 3 月 21 日
0.2.3 2020 年 3 月 14 日
0.2.0 2020 年 2 月 29 日
0.1.0 2020 年 2 月 26 日

#438命令行界面

MIT 许可证

28KB
285

medusa

使用 Rust 构建命令行界面 (CLI) 的一般模板(由 Rust 编写)

运行示例

  • 无参数运行示例
cargo run --example simple
  • 带参数运行示例
cargo run --example simple -- --echo "hello universe"
  • 带状态参数运行示例
cargo run --example stateful -- --echo "hello universe" --twice

如何使用

  • 在您的 Cargo.toml 中添加 crates 依赖项
...
[dependencies]
medusa = "0.3.0"
...
  • 导入库
...
use medusa::{ArgType, CommandLine, Handler, Variant};
...
  • 创建示例函数作为您的 CLI 选项处理器
...
fn hello(handler: &Handler) {
  println!("Hello, world!");
}

fn echo(handler: &Handler, payload: String) {
  println!("payload : {}", payload);
}

fn print_twice(handler: &Handler) {
  if let Some(argtype) = handler.get_arg("--echo") {
    if let ArgType::Content(payload) = argtype {
      println!("printed once more : {}", payload);
    }
  }
}
...
  • 创建您的处理器并添加一些操作
...
let mut handler: Handler = Handler::new();
handler.add(
  String::from("--hello"),
  Variant::Plain(hello),
  String::from("Print hello world for testing purpose.")
);
handler.add(
  String::from("--echo"),
  Variant::WithArg(echo),
  String::from("Print string passed to this parameter to output.")
);
handler.add(
  String::from("--twice"),
  Variant::Plain(print_twice),
  String::from("Print again the payload \"--echo\" have."),
);
...
  • 将您的处理器注册到 CLI 命令中
...
use std::env;

let mut command: CommandLine = CommandLine::new();
command.set_handler(handler);
command.set_name("mycli");
command.set_version("1.0.0");
command.run(env::args());
...
  • 测试您的 Rust 代码是否真的工作
cargo run -- --hello
cargo run -- --echo something
cargo run -- --echo greatstring --twice
  • 编译您的代码
cargo build

无运行时依赖