2 个版本

0.2.3 2024年6月28日
0.2.2 2024年6月28日

#371 in 命令行界面

每月下载量:39

MIT 许可证

31KB
388

命令行解析

CI

cl_parse 是一个库,允许您定义命令行选项和参数,然后根据该定义解析命令行参数。

动机

cl_parse 的开发是为了允许现代命令行工具中最常见的命令行选项。它也旨在易于使用。以下是 cl_parse 中实现的功能。

  • 选项别名。例如:-f, --file
  • 具有负值的选项。例如:--increment -1
  • 标志连接。即:-xvgf 等同于 -x -v -g -f
  • 自动生成使用说明
  • 自动生成帮助说明
  • 默认提供 -h, --help 输出
  • 检测选项的缺失值
  • 定义必需选项的能力
  • 选项和参数验证。即只能使用定义的选项和参数
  • 无序选项和参数
  • 检索目标类型中的选项或参数。例如:i32,String 等。

示例

use std::env;
use cl_parse::CommandLineDef;

let cl = CommandLineDef::new()
.add_flag(vec!["-b","--boolean"], "A boolean value")
.add_flag(vec!["-f","--faux"], "Another boolean value")
.add_option(vec!["-n","--num"], Some("num"), None, "A required numeric value")
.add_argument("arg-0")
.add_argument("arg-1")
.add_argument("arg-2")
.parse(env::args());

// The asserts assume the following commandline
// program arg1 --boolean arg2 -n -1 arg3
assert_eq!(cl.program_name(), "program");

// aliases are updated
let b:bool = cl.option("-b");
assert_eq!(b, true);

let boolean:bool = cl.option("--boolean");
assert_eq!(boolean, true);

// flags default to false
let f:bool = cl.option("-f");
assert_eq!(f, false);

// all aliased are updated
let faux:bool = cl.option("--faux");
assert_eq!(faux,false);

let n:i16 = cl.option("-n");
assert_eq!(n, -1);

assert_eq!(cl.arguments(), 3);

let arg0:String = cl.argument(0);
assert_eq!(arg0, "arg1");

let arg1:String = cl.argument(1);
assert_eq!(arg1, "arg2");

let arg2:String = cl.argument(2);
assert_eq!(arg2, "arg3");

依赖项

~38KB