6 个版本
使用旧的 Rust 2015
0.1.5 | 2022年3月31日 |
---|---|
0.1.4 | 2022年3月31日 |
0.1.2 | 2018年4月13日 |
0.1.1 | 2017年4月30日 |
#409 在 命令行界面
73 每月下载量
用于 4 个软件包 (3 直接)
21KB
444 行
tickbh 的 Commander
Rust 命令行界面的完整解决方案。
如何安装它?
将以下内容添加到您的项目中的 Cargo.toml
文件
[dependencies]
commander = "0.1"
如何使用它?
extern crate commander;
use commander::Commander;
如何获取正确的构建时间
构建时间是指 commander 的构建时间,如果您发布的是版本,您可以执行
cargo clean -p commander
首先,这样您将获得正确的构建时间
选项解析
使用 commander 定义的选项通过 .option()
、.option_str()
、.option_int()
、.option_float()
、.option_list()
方法。以下示例从 std::env::args()
或 Vec<String>
解析参数和选项,剩余的参数可以通过函数 .get()
、.get_str()
、.get_int()
、.get_float()
、.get_list()
获取。
extern crate commander;
use commander::Commander;
fn main() {
let command = Commander::new()
.version(&env!("CARGO_PKG_VERSION").to_string())
.usage("test")
.usage_desc("Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.")
.option_list("-l, --list [value]", "list", Some(vec!["a".to_string(), "b".to_string(), "c".to_string()]))
.option_int("--enum [value]", "enum", None)
.option_int("-d, --debug [value]", "debug", Some(123))
.option_str("-c, --copy [value]", "copy content", Some("source".to_string()))
.option("-r", "enable recursive", None)
.parse_env_or_exit()
;
if let Some(s) = command.get_str("c") {
println!("arg c = {}", s);
}
if let Some(s) = command.get_str("copy") {
println!("arg copy = {}", s);
}
if let Some(d) = command.get_int("d") {
println!("arg d = {}", d);
}
if let Some(e) = command.get_int("enum") {
println!("arg enum = {}", e);
}
if let Some(l) = command.get_list("list") {
println!("arg list = {}", l);
}
if let Some(r) = command.get("r") {
println!("arg r = {}", r);
}
}
如果您构建的是 bin 文件 test,以下示例显示输出信息。
- ./test -c xxxx -d
arg c = xxxx
arg copy = xxxx
arg d = 123
//arg c and copy is the same arg, and we has d param but we not set the value, it read from default:123
- ./test -h #它会显示帮助信息并退出程序
Usage:./test test
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Options:
-v, --version Show the bin version and build time
-h, --help Show this help message and exit
-l, --list [value] list default:a, b, c
--enum [value] enum
-d, --debug [value] debug default:123
-c, --copy [value] 拷贝内容 default:aaa
-r enable recursive
- ./test -v #它将显示版本和构建时间然后退出程序
Version:0.1.1
Build Time:2017-04-29T14:11:24+08:00
- ./test --enum aa -r --list aa bb cc #我们提供枚举和列表参数
arg list = ["aa", "bb", "cc"]
arg r = true
// we has the arg enum, but the enum is not a vaild int, so convert failed, and we provide arg r, so r is true
贡献
欢迎贡献!
无运行时依赖
~120KB