问题标签 [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 回答
197 浏览

rust - 使用 clap 和 structopt 获取不同命令行选项的相对顺序

问题

我有一个带有不同选项的命令,这些选项的相对顺序对命令的语义很重要。例如,在 中command --config A --some-option --config-file B --random-option --config C --another-option --more-options --config-file D,的相对顺序A, B, C, D很重要,因为它会影响命令的含义。

如果我只是定义选项如下:

然后我会得到两个向量,configs = [A, C]但是和config_files = [B, D]中的元素之间的相对顺序已经丢失了。configsconfig_files

想法

自定义解析函数

这个想法是提供一个自定义解析函数,并在解析每个选项时使用计数器记录索引。不幸的是,解析函数没有按照命令定义的原始顺序调用。

别名

我可以为该选项添加别名,如下所示:

这种方法有两个问题:

  • 我需要一种方法来区分选项是否通过--configor--config-file传递(仅通过检查值并不总是可以弄清楚值是如何传递的)。
  • 我无法为可见别名提供简短选项。

相同的向量,多个选项

另一个想法是附加多个structopt指令,以便两个选项使用相同的底层向量。不幸的是,它不起作用——structopt只使用最后一个指令。就像是:

恢复订单

我可以尝试通过搜索解析值来恢复原始顺序。但这意味着我将不得不复制相当多的解析逻辑(例如,需要支持传递--config=X, --config X,需要处理X作为另一个选项的输入出现等)。

我宁愿有办法可靠地获得原件,而不是丢失订单并尝试以可能脆弱的方式恢复它。

0 投票
1 回答
123 浏览

rust - 从输入中的任何位置解析 Structopt 标志

我希望能够在我的命令行工具中使用“通用”标志,该工具使用StructOpt. 也就是说,如果我有一个标志(例如--debug),无论该标志在输入中的哪个位置,我都希望它的行为相同:

alpha并且--debug在此示例中只是有用的占位符;实际的子命令和标志会有所不同。)

实际行为:

预期行为:

这是我的main.rs代码:

这是我的文件(上面的示例在没有依赖Cargo.toml项的情况下不起作用):structopt

有没有办法在不复制子命令每个级别的“通用”标志的情况下做到这一点?

0 投票
1 回答
136 浏览

rust - 使用 structopt 时,如何测试用户是否提供了选项或是否来自默认值?

我正在使用structopt板条箱,并且具有以下结构:

如果options.length50,我怎么知道它来自默认值 50,或者用户提供的值 50?

0 投票
1 回答
75 浏览

rust - structopt:错误[E0277]:特征绑定`String:From<&OsStr>`

我正在使用 Rust 的structoptcrate,但是当我尝试编译示例时,出现以下错误,

0 投票
1 回答
58 浏览

rust - structopt 是否支持多上下文位置参数?

我正在尝试移植seqstructopt,我应该如何支持,

请注意,参数在参数列表中的位置发生了LAST变化,为了完整起见,最好知道BOTH

  • 是否structopt支持与上下文相关的不同位置参数,如果支持,如何?
  • 是否structopt支持右锚定的位置参数,如果支持,如何?
0 投票
1 回答
120 浏览

rust - 你能构建一个 structopt 解析器来接受命令行的其余部分(或多个参数)吗?

structopt有一个简洁的功能,它可以接受一个类型化的参数,因为Vec<T>它会吞噬命令行的其余部分。

它还能够接受您创建的类型

如果字段类型没有FromStr实现,或者您想提供除 之外的自定义解析方案FromStr,您可以使用以下方式提供自定义字符串解析器parse(...)

您创建的类型是否可以不是标量并且具有多个值或包装 a是否有一种方法可以为包装但重新排序其参数的类型或包含多个字段的结构Vec<T>创建自定义解析器,例如像这样Vec<T>

我需要一个不同的结构,因为参数名称取决于顺序,(如果有一个参数,它只是“最后一个”,如果有两个参数,第一个参数不是最后一个,它是“第一个”,第二个参数是“最后一个” )。我想知道是否有办法编写一个解析器来理解这些细微差别(如上所述),或者可以重新排序一个向量以适应它们。

0 投票
1 回答
46 浏览

rust - 在单独的文件中定义时,structopt 无法找到其 Args 解析器

我开始使用 Rust 中的命令行工具,并从一开始就碰壁。StructOpt我可以使用if Optstruct is defined in解析命令行参数main.rs,但由于我希望能够将Optstruct 传递到库代码中,所以我在它自己的文件中定义它,以便库的其他部分知道它是什么所有关于。

这是倾销错误最少的代码版本,尽管我承认它在很大程度上是通过尝试编译器建议的东西和一些随机的 SO 建议拼凑而成的,所以它可能是完全错误的。

我得到的构建错误是:

(是的,我已经尝试添加use opt::structopt::clap::Arg;,以防万一,但错误并没有消失,我收到有关未使用导入的警告 - 同时仍被告知尝试添加use未使用的相同内容,这很有趣)

Cargo.toml

src/main.rs

src/lib.rs

src/opt.ts

建议感激不尽。

0 投票
1 回答
67 浏览

rust - 如何使用 structopt 创建嵌套子命令?

介绍

我目前有子命令正在使用structopt,类似于其他答案。但是,我希望嵌套子命令的docker工作方式类似:

当前代码

main.rs

cli/mod.rs

我试过的

添加了另一个结构:main.rs

cli/mod.rs

但是我收到以下错误: