问题标签 [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 投票
0 回答
200 浏览

rust - 使用 clap 3 派生宏,我如何指定组的至少一个参数必须存在?

我有一个拍手结构如下:

我如何指定至少一个{arg_a, arg_b, arg_c}必须存在,但也可以存在更多?

0 投票
0 回答
128 浏览

rust - 根据 Rust 中的值确定给出哪个命令行参数(例如使用 Clap)

我正在用 Rust 构建一个 CLI 实用程序。为简单起见,假设它执行作为命令行参数给出的任务。用户还可以通过参数选择性地指定谁请求了任务(例如“工程”或“人力资源”)和任务的优先级(“高”或“低”)。

我希望程序能够识别仅从值中指定的参数,即没有命令行标志。(参数的可能值不重叠。)例如,这些都应该有效:

当然,我可以为此编写自定义逻辑,但我的问题是:我可以使用 crate 来解析命令行参数,例如clap吗?

Fwiw,我尝试使用 clap 中的ArgGroup结构来获得这种行为,但没有成功。所以:

这坚持将“高”解析为 a requested_by,而不是 a priority,因此它给出:

错误:“高”不是“<requested_by>”的有效值 [可能的值:工程、人力资源]

用法:应用程序 <task_name> <requested_by|priority>

有关更多信息,请尝试 --help

0 投票
0 回答
79 浏览

rust - 维护参数顺序

我有一组 rust 程序,其中参数的顺序很重要,例如

mytool --foo 这个 --bar that

不一样

mytool --bar that --foo this

我真的很想简单地从左到右迭代 args,但是 clap 在抽象掉它方面做得很好。

我什至愿意迭代所有 args 并使用 indices_of 生成一个有序的参数 Vec 然后处理它,但我不认为 clap 提供了一种以任何顺序迭代所有 args 的方法。我将有一组相当大的相当复杂的命令行,所以我宁愿不必重复参数名称列表。

我想保留拍手所做的所有伟大的事情,但我真的需要知道输入的顺序。

有什么建议吗?

0 投票
1 回答
1079 浏览

rust - 带有派生宏的 Clap 选项无法在 rust clap 3.0.0-beta.5 中编译

我正在尝试最新 beta 版 clap的索引页面上的“使用派生宏”示例:

不幸的是,它无法编译:

我试图在这个 GitHub 标签的 tar 文件中找到完整的示例文件“examples/01d_quick_example.rs” ,但那里似乎不存在。

我很欣赏这是一个测试版,但是这个功能是否可以正常工作,还是我做错了什么?

谢谢!

0 投票
0 回答
55 浏览

rust - 如何用 clap 解析非标准命令行参数?-bypas1234567890

我有一个使用 clap 解析其参数的 rust 应用程序,但我需要能够接受每次调用时都会更改的参数。参数将始终以相同的 6 个字符开头 -bypas,但接下来的 10 个字符将随着每次调用而改变。有没有办法用拍手部分识别一个论点?

0 投票
1 回答
125 浏览

rust - 使用 - 作为标准输入/标准输出

许多命令行工具可让您-用于标准输入或标准输出。在 Rust 中是否有一种惯用的方式来支持它?

处理命令行参数的最常用方法似乎是clap. 如果我只想处理路径而不想要特殊情况-,我可以使用

然而,要处理-成为标准输出的情况,它就更复杂了。now的类型file必须是Box<dyn Write>因为stdout()不是 a File,而且正确设置它有点复杂。不难,但是那种需要多次复制并且容易搞砸的样板。

有没有一种惯用的方法来处理这个问题?

0 投票
1 回答
50 浏览

rust - 如何在不需要显式值的情况下使一个论点暗示另一个论点?(--foo,不是--foo true)

我希望一个论点暗示另一个论点,尽管它们不采用明确的值。--simple-anime或者--complex-anime应该暗示--anime。应该工作的 API 是default_value_ifs,如果前者存在,--anime也将是真的。问题是那个选项打开了takes_value,如果我把它关掉,暗示就不会发生。

简单的例子:--dog暗示--mammal. 两者都不应该需要一个值——如果参数存在,它就是真的。

在 rust 游乐场尝试:https ://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=4855a88381f65cef8d07f7eab4d41e78

0 投票
1 回答
148 浏览

rust - 如何使用 Clap 将字符串导入 Rust 应用程序解析 args?

我是 Rust 的新手,我一直在写一些练习应用程序。我正在尝试使用 Clap 接受命令行参数。下面的代码接受一个字符串和一个数字并将它们打印出来,如下所示:

这很好用,但我希望能够像这样通过管道输入代替字符串:

尝试这样做会产生:

我可以像这样使用 xargs 解决这个问题:

有没有更好的方法来做到这一点,这样我就可以在仍然使用 -n 选项的同时接受管道中的字符串?提前致谢。

额外的问题: 如果我使用 xargs 管道输入字符串,我可以在字符串中添加换行符(分隔符设置为 \0),它们会反映在输出中。如果我在没有 echo 和 xargs 的情况下直接传递它,则输出中会显示文字 '\n'。有没有办法在直接运行时表示换行符?

0 投票
1 回答
58 浏览

rust - 从未使用过的参数

我正在尝试添加另一个打印解析结果的参数,但不确定为什么会导致此错误:

代码在这里:

0 投票
0 回答
33 浏览

rust - 如何正确导出带有宏的结构?

我正在尝试使用Clap. 当我在一个文件中完成所有操作时,它工作正常

但是当我尝试放入Args一个单独的文件时,它会中断

出现以下错误:

到目前为止,我能够让它发挥作用的唯一方法就是做

这是使它工作的唯一方法吗?有没有办法避免Parser在这里导入?