#flags #cli-parser #cli #args #style #declaration #declarative

bin+lib yafp

yafp 是一个非 POSIX 的 CLI 标志解析器,采用命令式风格标志声明,而不是通常的声明式风格。

2 个不稳定版本

0.2.0 2024 年 8 月 4 日
0.1.0 2024 年 7 月 14 日

9#declaration

Download history 44/week @ 2024-07-08 66/week @ 2024-07-15 78/week @ 2024-07-29 43/week @ 2024-08-05

231 每月下载量

MIT 许可证

23KB
336

yafp

Build Status Crates.io Documentation Rust 2021

yafp 是一个非 POSIX 的 CLI 标志解析器,采用命令式风格标志声明,而不是通常的声明式风格。

功能

  • 帮助生成。
  • 具有使用文本的命令式标志声明。
  • 支持布尔标志,默认为 false,如果设置则为 true
  • 支持必需和可选值标志。
  • 将值解析为指定的变量类型。

限制

  • 仅支持短标志样式。
  • 不支持标志组合,例如,-fd 不是 -f-d,而是单个标志。
  • 不支持非 UTF-8 参数。

用法

use yafp::Parser;

fn main() {
    let mut parser = Parser::from_env();
    
    // Declare flags.
    parser.bool_flag("verbose", "this is used to get verbose output");
    parser.required_flag("url", "this is a required flag");
    parser.required_flag("workers", "this is an optional flag");

    // finalize() must be called before accessing arguments.
    // Unbound args are returned if any.
    //
    // An error is returned if there is a parsing error.
    let result = parser.finalize();
    let remaining = match result {
        Ok(remaining) => remaining,
        Err(e) => {
            println!("{}: {}", parser.command, e);
            exit(1);
        }
    };
    
    // yafp parses values to the correct type.
    let verbose: bool = parser.get_value("verbose").unwrap();
    
    //...
}

许可证

MIT

无运行时依赖