问题标签 [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.
rust - 如何将版本信息从 Vergen 传递到 StructOpt?
我正在尝试在 Rust 中设置一个简单的 CLI 程序,但我希望它根据其中的信息显示版本,git describe
而不是 Cargo.toml 文件中的任何内容。
我设置了一些基本的依赖项:
并且 build.rs 文件使用 vergen 进行提升:
结果是一组可从我的 main.rs 中使用的环境变量:
这会打印出我构建的正确 git SHA。问题是我不知道如何让 StruckOpt 使用生成的版本。我本来希望这样的工作:
可惜!尽管记录了这种语法,但它在尝试构建时会引发解析错误:
是什么赋予了?如何使用 StructOpt 设置我的 CLI,以便--version
报告 vergen 检测到的版本?
rust - 如何在 stuctopt 定义中访问运行时定义的变量?
我希望能够使用变量的值(或者更好的是 a 的返回function(arg)
)作为使用 structopt 定义的 CLI 程序的 about 字符串。最终目标是一个完全本地化的 CLI,它可以检测系统语言或 ENV var,并加载本地化的字符串,这些字符串会被烘焙到--help
消息中,等等。
默认情况下,它使用文档注释:
我发现我可以传递手动输入的字符串:
这更近了一步,但我真正想做的是传递一个变量:
最后一个块是伪代码,因为我不知道使用什么语法来实现这一点。最后,我需要的不仅仅是一个字符串切片,但我认为这是一个开始的地方。
如何将这样的值传递给 structopt?我是否需要以某种方式访问底层的 clap 接口?
rust - 如何使用structopt将特殊字符作为字符串参数传递?
我有一个命令行来搜索文件中的单词。我正在使用 StructOpt 来获取用户想要搜索的单词。
当您编写类似command -a
. 我知道图书馆正在尝试做某事-a
而 中没有-a
,struct
所以我尝试了:command "-a"
但它显示:
error: Found argument '-a' which wasn't expected, or isn't valid in this context
有没有办法使用 StructOpt传递特殊字符-a
并检索信息( )?-a
rust - StructOpt:如何在 clap::arg 属性方法中使用子命令枚举的字段?
我有以下设置:
在这种情况下,我想要一个条件,其中一个aisle
和shelf
一起指定或isbn
单独指定。我发现原始的 clap 方法required_unless
和conflicts_with
,以及它们的变体required_unless_all
和conflicts_with_all
一起可以使用。
也许像这样使用它们:
和
但这会导致以下结果
这是正确的,因为通过的 pin 被用作isbn
代替。
由于明显的原因,这不起作用。我认为我的问题的主要问题是如果放在子命令下,这些字段不能相互引用。我对当前的方法做错了吗?在这种情况下,是否有更好的替代 clap::arg 方法的方法?或者有没有办法在子命令之间进行通信?
rust - 是否可以在不解析命令行参数的情况下构造一个 StructOpt Args 对象进行测试?
我有一个 fn main,它通过 StructOpt .. Args::from_args 解析参数。
有没有办法创建这个 Args 对象而不实际启动可执行文件进行测试?我可以直接创建一个 Args 对象吗?
例如,我可以这样做吗
rust - StructOpt - 如何为 Vec 提供默认值?
我正在寻找一种方法来structopt
Vec
默认初始化具有多个项目的字段。我可以为单个项目做到这一点:
但是默认情况下如何使cli.foo
相等呢?vec!["foo", "bar"]
rust - 有没有办法为 build.rs 更改 OUT_DIR
目前我正在尝试编写一个build.rs
为 cli 应用程序创建一堆自动完成脚本的程序。
目前,这会输出./target/debug/build/monk-cli-43148fdfeeafb947/out/monk.bash
. 我想将这些脚本打包到 CICD 管道中,但是脚本的路径不一致。有没有办法可以将这些文件输出到一致的目录,例如./target/completions/monk.bash
,或者我应该在 build.rs 以外的其他地方生成自动完成脚本?
rust - Rustlang structopt 如何设置主目录
我正在为我的 cli 程序使用 crate structopt 。如果 args 中的输出目录未通过,我想将主目录设置为默认目录。以下是我的代码,请建议我如何实现。
rust - structops - 如何根据布尔标志使参数可选
我有接受 2 个布尔标志-d
进行解码和-e
编码的程序。但是,如果-e
指定,则需要提供额外的消息字符串(要编码的消息)。-d
如果指定,则不应存在此字符串。如何使用 structops 完成此操作?
这是我尝试过的:
使用运行程序可以cargo run -- -e "test message"
正常工作,但给了我未提供和参数cargo run -- -d
的错误。<message>
--encode
<message>
仅当-e
存在时我如何要求?
我还尝试了以下方法:
这同样适用,但在仅指定参数-e message
时会出现恐慌-d
rust - 如何创建所有子命令都是可选的 StructOpt 命令
我想安排子命令,例如:
mycmd status
:打印一个简短的状态 - 不工作mycmd status full
: 打印详细状态 - OKmycmd status dump
: 将完整的调试状态转储到文件 - 好的
我无法实现简单mycmd status
,因为 StructOpt 认为我缺少必需的子命令(子子命令?)并打印使用情况。文档表明我需要以Option<>
某种方式使用该特征,但我无法弄清楚在这种情况下如何使用。
我有一些非常类似于以下内容:
main.rs
状态.rs