Arn*_*rah 4 parameter-passing command-line-interface rust clap
作为我的 CLI 工具的一部分,我有一个clap::Arg接受多个值的,代表一个(x, y)坐标。我希望使用能够将值作为-p/--position 1 0
.arg(
clap::Arg::with_name("position")
.help("The position for yada yada yada")
.long("position")
.short("p")
.number_of_values(2)
.validator(|p| match p.parse::<usize>() {
Err(_) => Err(String::from("Error string")),
Ok(_) => Ok(()),
}
)
)
Run Code Online (Sandbox Code Playgroud)
虽然这适用于我想要的界面,但这会产生一些令人困惑的帮助消息:
... Help text ...
OPTIONS:
... other options ...
-p, --position <position> <position> The position for yada yada yada
Run Code Online (Sandbox Code Playgroud)
这里困扰我的是-p, --position <position> <position>,它似乎表明两个位置被传递给参数。有什么办法可以用<position> <position>我选择的字符串替换吗?(我的目标是-p, --position <x> <y>在帮助消息中获得类似的信息。)
快速浏览一下文档给了我们value_names():
为选项参数的值指定多个名称。这些名称只是装饰性的,仅用于帮助和使用字符串。名称不用于访问参数。参数的值按数字顺序访问(即,如果您指定两个名称,一个和两个将是第一个匹配的值,两个将是第二个)。
注意:这会隐式设置
Arg::number_of_values值名称的数量是否大于 1。即请注意,您为值设置的“名称”数量将是满足此参数所需的确切值数量注意:隐式设置
Arg::takes_value(true)
.arg(
clap::Arg::with_name("position")
.help("The position for yada yada yada")
.long("position")
.short("p")
.value_names(&["x", "y"])
.validator(|p| match p.parse::<usize>() {
Err(_) => Err(String::from("Error string")),
Ok(_) => Ok(()),
}
)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |