问题标签 [structopt]

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 投票
1 回答
269 浏览

rust - 如何将版本信息从 Vergen 传递到 StructOpt?

我正在尝试在 Rust 中设置一个简单的 CLI 程序,但我希望它根据其中的信息显示版本,git describe而不是 Cargo.toml 文件中的任何内容。

我设置了一些基本的依赖项:

并且 build.rs 文件使用 vergen 进行提升:

结果是一组可从我的 main.rs 中使用的环境变量:

这会打印出我构建的正确 git SHA。问题是我不知道如何让 StruckOpt 使用生成的版本。我本来希望这样的工作:

可惜!尽管记录了这种语法但它在尝试构建时会引发解析错误:

是什么赋予了?如何使用 StructOpt 设置我的 CLI,以便--version报告 vergen 检测到的版本?

0 投票
1 回答
143 浏览

rust - 如何在 stuctopt 定义中访问运行时定义的变量?

我希望能够使用变量的值(或者更好的是 a 的返回function(arg))作为使用 structopt 定义的 CLI 程序的 about 字符串。最终目标是一个完全本地化的 CLI,它可以检测系统语言或 ENV var,并加载本地化的字符串,这些字符串会被烘焙到--help消息中,等等。

默认情况下,它使用文档注释:

我发现我可以传递手动输入的字符串:

这更近了一步,但我真正想做的是传递一个变量:

最后一个块是伪代码,因为我不知道使用什么语法来实现这一点。最后,我需要的不仅仅是一个字符串切片,但我认为这是一个开始的地方。

如何将这样的值传递给 structopt?我是否需要以某种方式访问​​底层的 clap 接口?

0 投票
1 回答
126 浏览

rust - 如何使用structopt将特殊字符作为字符串参数传递?

我有一个命令行来搜索文件中的单词。我正在使用 StructOpt 来获取用户想要搜索的单词。

当您编写类似command -a. 我知道图书馆正在尝试做某事-a而 中没有-astruct所以我尝试了:command "-a"但它显示:

error: Found argument '-a' which wasn't expected, or isn't valid in this context

有没有办法使用 StructOpt传递特殊字符-a并检索信息( )?-a

0 投票
0 回答
648 浏览

rust - StructOpt:如何在 clap::arg 属性方法中使用子命令枚举的字段?

我有以下设置:

在这种情况下,我想要一个条件,其中一个aisleshelf一起指定或isbn单独指定。我发现原始的 clap 方法required_unlessconflicts_with,以及它们的变体required_unless_allconflicts_with_all一起可以使用。

也许像这样使用它们:

但这会导致以下结果

这是正确的,因为通过的 pin 被用作isbn代替。

由于明显的原因,这不起作用。我认为我的问题的主要问题是如果放在子命令下,这些字段不能相互引用。我对当前的方法做错了吗?在这种情况下,是否有更好的替代 clap::arg 方法的方法?或者有没有办法在子命令之间进行通信?

0 投票
1 回答
248 浏览

rust - 是否可以在不解析命令行参数的情况下构造一个 StructOpt Args 对象进行测试?

我有一个 fn main,它通过 StructOpt .. Args::from_args 解析参数。

有没有办法创建这个 Args 对象而不实际启动可执行文件进行测试?我可以直接创建一个 Args 对象吗?

例如,我可以这样做吗

0 投票
2 回答
1159 浏览

rust - StructOpt - 如何为 Vec 提供默认值?

我正在寻找一种方法来structopt Vec默认初始化具有多个项目的字段。我可以为单个项目做到这一点:

但是默认情况下如何使cli.foo相等呢?vec!["foo", "bar"]

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 回答
302 浏览

rust - Rustlang structopt 如何设置主目录

我正在为我的 cli 程序使用 crate structopt 。如果 args 中的输出目录未通过,我想将主目录设置为默认目录。以下是我的代码,请建议我如何实现。

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 回答
541 浏览

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

我想安排子命令,例如:

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

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

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

main.rs

状态.rs