问题标签 [clap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
949 浏览

rust - 如何为 Clap Args 使用内部库枚举

我目前正在开发一个安全工具的Rust 端口。根据 Rust 的指南,我想将核心库分离到它自己的 crate 中,这样我们就可以创建与核心库交互的各种工具(CLI、API、流等),而无需将它们耦合在一起。

核心库公开了两个公共枚举,其中一个是PermutationMode(截断的):

使用Clap创建 CLI 实用程序时,我想将此库 Enum 扩展为 CLI 的一部分,如下所示:

因此,当调用 CLI 时,我们可以无缝地将置换模式从用户传递到 CLI,再传递到库,而 CLI 不需要了解内部模式(如果库添加了更多模式)。


目前这似乎是不可能的(这是有道理的)。一种尝试是使用类型别名:

但是,我们不能将派生宏用于类型别名。我还尝试“克隆”枚举并尝试映射到库枚举:

哪个不编译。


问题- 是否可以扩展内部库 Enum 以将其用作 Clap 参数?

0 投票
0 回答
520 浏览

rust - 有没有办法为 build.rs 更改 OUT_DIR

目前我正在尝试编写一个build.rs为 cli 应用程序创建一堆自动完成脚本的程序。

目前,这会输出./target/debug/build/monk-cli-43148fdfeeafb947/out/monk.bash. 我想将这些脚本打包到 CICD 管道中,但是脚本的路径不一致。有没有办法可以将这些文件输出到一致的目录,例如./target/completions/monk.bash,或者我应该在 build.rs 以外的其他地方生成自动完成脚本?

0 投票
1 回答
311 浏览

rust - 动态生成参数 Clap

我试图弄清楚如何使用 Clap 从输入参数动态生成参数。

我试图用 Clap 模拟的是以下 python 代码:

这样您就可以在命令中执行以下操作:

并从第一个参数动态生成附加参数。不确定是否可以在 Clap 中执行,但我认为这可能是因为自述文件说明您可以使用构建器模式动态生成参数 [1]。

所以这是我试图做到这一点的天真尝试。

这显然不会让编译器在你的!format一生中尖叫,app.arg我最感兴趣的是解决我如何生成新的参数app,然后可以再次匹配。我对生锈还很陌生,所以很可能用 Clap 是不可能的。

[1] https://github.com/clap-rs/clap

0 投票
0 回答
544 浏览

rust - structops - 如何根据布尔标志使参数可选

我有接受 2 个布尔标志-d进行解码和-e编码的程序。但是,如果-e指定,则需要提供额外的消息字符串(要编码的消息)。-d如果指定,则不应存在此字符串。如何使用 structops 完成此操作?

这是我尝试过的:

使用运行程序可以cargo run -- -e "test message"正常工作,但给了我未提供和参数cargo run -- -d的错误。<message>--encode

<message>仅当-e存在时我如何要求?

我还尝试了以下方法:

这同样适用,但在仅指定参数-e message时会出现恐慌-d

0 投票
1 回答
214 浏览

rust - 除非在 Rust 中使用 clap 标记,否则如何设置必需

所以我正在尝试使用 Rust 编写cp的实现,但我遇到了一个问题。有一个标志-t=DIRECTORY和通常的DESTINATION。我被困在这里,如果不应该提供-t选项,但如果不提供,则必须提供。还有一个标志既是必需的又是多重的DESTINATION-tDESTINATIONSOURCE

0 投票
1 回答
181 浏览

rust - 特征 `std::convert::From` 未实现

我尝试使用 clap 库创建一个简单的应用程序解析命令行参数并将它们转换为Config自定义结构。我为我的结构实现From了 trait,但是,当我尝试调用from函数时,我收到以下错误:

这是代码:

main.rs:

cli.rs:

lib.rs:

货物.toml:

我究竟做错了什么?

0 投票
1 回答
103 浏览

rust - 包括长选项,不包括帮助和版本的短选项

我想包括没有和短选项的--help长选项。这可能吗?--version-h-V

我正在使用 yaml 拍手。我能想到的最接近的是使用隐藏(未使用)的参数来掩盖短选项。

这感觉不是一个非常干净的方法。还有其他/更好的方法吗?

0 投票
1 回答
156 浏览

rust - clap - 返回 ArgMatches<'static> 时如何传递 default_value

为了减少代码行,我将clap App移动到另一个文件,如下所示:

操场

我遇到的问题是我不知道如何将参数home_dir用作default_value,这里:

default_value的签名是:

我怎么能format!("{}/.s3m/config.yml", home_dir在其他人的一生中通过一个来满足签名?

0 投票
1 回答
112 浏览

rust - 如何在 clap 中使用未指定的参数

我想使用 clap 库创建一个 CLI 应用程序。我遇到的问题是我想像这样使用我的应用程序:

目标是我可以在我的程序中以Vecwith file.txt read2.txtvalues 的形式恢复。

我的代码:

我使用 clap 的 beta 版本创建一个 yaml 文件来管理标志。

yaml 文件:

0 投票
1 回答
541 浏览

rust - 如何创建所有子命令都是可选的 StructOpt 命令

我想安排子命令,例如:

  • mycmd status:打印一个简短的状态 - 不工作
  • mycmd status full: 打印详细状态 - OK
  • mycmd status dump: 将完整的调试状态转储到文件 - 好的

我无法实现简单mycmd status,因为 StructOpt 认为我缺少必需的子命令(子子命令?)并打印使用情况。文档表明我需要以Option<>某种方式使用该特征,但我无法弄清楚在这种情况下如何使用。

我有一些非常类似于以下内容:

main.rs

状态.rs