Crates.io | commander |
lib.rs | commander |
version | 0.1.5 |
source | src |
created_at | 2017-04-29 06:36:24.776403 |
updated_at | 2022-03-31 09:59:50.50796 |
description | The complete solution for Rust command-line interfaces |
homepage | https://github.com/tickbh/Commander |
repository | https://github.com/tickbh/Commander |
max_upload_size | |
id | 12398 |
size | 26,369 |
The complete solution for Rust command-line interfaces.
Add this to the Cargo.toml
file of your project
[dependencies]
commander = "0.1"
extern crate commander;
use commander::Commander;
the build time is the commander build time, if you publish release version, you can exec
cargo clean -p commander
first, that you will got right build time
Options with commander are defined with the .option()
,.option_str()
,.option_int()
,.option_float()
,.option_list()
method. The example below parses args and options from std::env::args()
or Vec<String>
, leaving remaining args can get by func .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);
}
}
The output info if you build bin is test. follow examples show.
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
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
Version:0.1.1
Build Time:2017-04-29T14:11:24+08:00
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
Contributions are welcome!