12个版本
0.3.10 | 2024年5月2日 |
---|---|
0.3.9 | 2024年5月1日 |
0.3.8 | 2024年4月30日 |
0.2.0 | 2024年4月29日 |
0.1.0 | 2024年4月29日 |
280 在 过程宏
62 每月下载量
11KB
147 行
Clappos
描述
Clappos是Clap的一个简单、无标志的替代品,用于构建简洁的CLI工具。
项目状态
该项目由Level9Turtles组织积极开发和维护。有关贡献信息或任何其他疑问/问题,请联系 [email protected]
用法
安装
将以下内容添加到您的Cargo.toml中
clappos = "*"
或运行
cargo add clappos
以获取最新版本
示例
use clappos::Clappos;
#[derive(Clappos)]
struct Args {
/// help menu info for arg1
string_arg: String,
/// help menu info for arg2
num_arg: i32,
/// help menu info for arg3
bool_arg: bool,
/// help menu info for arg4
op_string_arg: Option<String>,
/// help menu info for arg5
op_num_arg: Option<i32>
}
fn main() {
let args = Args::parse(); // user input: `cargo run this 1 true that`
println!("{}" args.string_arg); // => "this"
println!("{}", args.num_arg); // => 1
println!("{}", args.bool_arg); // => true
println!("{}", args.op_string_arg); // => Some("that")
println!("{}", args.op_num_arg); // => None
}
对于无标志CLI工具,有一个权衡,即任何可选参数都必须放在最后,并且在使用时,Some值不能在None值之后。未来,我可能添加一个功能来标记可选参数。
目前,以下示例是无效的
#[derive(Clappos)]
struct Args {
optional_number: Option<i32>,
required_string: String, // this won't work because require arg comes after optional arg
}
#[derive(Clappos)]
struct Args {
string_arg: String,
op_num1: Option<i32>, // this is valid, but currently a user could not pass op_num2
op_num2: Option<i32>, // without also passing an op_num1. May fix this with flags in the future
}
作者和致谢
该工具由Level9Turtles High Altitude Lab的Adam Horn编写和维护。有关疑问和问题,请通过电子邮件[email protected]联系我
许可证
该项目受MIT开源许可证的许可。