#clap #version #arguments #position #assignment #zero #flagless

clappos

一个简单、无标志版本的Clap,使用零依赖的参数位置进行赋值

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过程宏

Download history 700/week @ 2024-04-26 96/week @ 2024-05-03 3/week @ 2024-05-17 1/week @ 2024-06-28 8/week @ 2024-07-05 54/week @ 2024-07-26 8/week @ 2024-08-02

62 每月下载量

MIT 许可证

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开源许可证的许可。

无运行时依赖