问题标签 [subcommand]

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

command-line-arguments - Picocli:如何使子命令成为必需

我有一个带有子命令的命令。在我的应用程序中,我希望用户必须指定子命令。我该怎么做?

(另见https://github.com/remkop/picocli/issues/529

0 投票
0 回答
76 浏览

python - 子解析器选项的默认值(Python argparse)

我的程序boiler用于argparse解析命令行选项和子解析器chain(实际上,我将添加更多子命令)。它应该-t为主选项解析器和子解析器选择选项。

例子:

相当于

子命令解析器的选项覆盖全局选项。例如:

相当于

用 Python 编写代码最优雅的方法是什么argparse

我真正要做的事情是在这个答案中描述:https ://stackoverflow.com/a/53750697/856090的问题Chaining in a command line several transformations with options。请注意,上述内容并不完全是我所需要的,但我需要解析其中描述的子命令管道(其中一些子命令可能采用-t选项和其他可能具有全局默认值的选项)。

我真正需要的示例:

这里用 URL2 分隔的两个链中的第一个链+使用 URL2,第二个使用 URL1。

0 投票
1 回答
192 浏览

python - 使用子解析器时,命令行参数被默认值覆盖

我有一个带有子命令的程序,但它们都有共同的参数(例如,它们都需要输入和输出目录),我将它们包含在父解析器中以避免冗余。但是,我希望每个子命令具有不同的默认值,但这会导致命令行中提供的值被忽略。

MWE:

这给出了:

但我想要:

我可以通过分别向每个子解析器添加参数来规避这种情况,但如果可能的话,我想避免这种冗余。

0 投票
1 回答
386 浏览

python-3.x - 使用 cmd 模块:如何在“帮助”中记录子命令并与自动完成功能集成?

我正在使用该cmd模块并有一个名为server(method do_server()) 的命令,它具有开箱即用的自动完成功能(我在 macOS 上)。这一切都很好,并且按预期工作。但是,如果我还想在命令上另外使用子server命令,事情就不会像我需要的那样工作。

我需要以下内容:
- 子命令还应与help命令集成(输入时不应显示,help因为它们不是一级命令,但应在输入时显示help server
- 子命令还应与自动完成集成

目前我没有看到一种方法来定义开箱即用的子命令。我需要将它们作为不理想的命令的参数来实现。

我的问题是,我怎样才能实现子命令的自动文档help并具有自动完成功能,以便它尽可能好地集成cmd

对于这个例子,我想更好地集成connect为一个子命令:

我希望有这样的东西:

不幸的是,这是不可能的。

0 投票
1 回答
120 浏览

python - 带有子命令的命令和子命令请求的 argparse 解决方案

希望这将转化为一个优雅的解决方案,但我自己无法弄清楚。我一直在阅读大量的例子和解释,但我似乎无法让它发挥作用。

我正在编写一个需要以下选项的程序:

如果使用命令,则需要一些子命令或选项。

我很难使用 argparse 库来完成这项工作。我尝试使用 add_argument_group、subparsers 等。但我认为我在这里缺少一些基本的东西。我发现接近的所有示例都是关于 svn,但它们似乎只在 svn 之后上升了 1 级。我需要更多,或者不同的方法。

如果可能的话,我想让dbquery deploy list之后的所有参数都是可选的,至少需要 1 个选项。但是区分系统名称和环境名称可能会变得很棘手,因此最好更改它:

进入

ps [] 之间的选项是可选的,<> 之间的选项是必需的。

提前致谢。

作为对提供我的代码的评论的回应,让我们关注 dbquery,因为其余的可能是重复的:

执行结果:

这看起来不错,但是:

表明预期的参数不是锁定、提升或部署。

好的,反馈有助于我的理解。我现在明白解析器可以得到子解析器,而那些可以得到解析器。因此,一个人可以走的深度可能没有限制。这个新见解让我明白了这一点:(来自我的工作示例的部分副本)

我现在似乎只在不同子命令中使用参数作为“-env”和“-subsystem”时遇到问题。因为当我将它们添加到另一个解析器时存在冲突。我也没有关于选择哪些选项的数据。这也是需要的。

0 投票
1 回答
330 浏览

python - 如何有一个特定的子命令需要带有 argparse 的标志?

所以我正在编写一个使用argparse来传递信息和处理输入的 python 脚本。我一直在使用子命令来强制/使用程序中的不同操作。到目前为止,我的脚本格式如下:

指定用法的地方:

用法:test.py [-h] {create,update} ...

位置参数:{创建,更新}

可选参数:-h, --help 显示此帮助信息并退出

我的问题是,虽然update命令工作正常,但我需要传递一个 ID,但我create有一个错误/问题,它抱怨没有设置标志/传递一个,即使它不是必需的/不需要的。

我在这里做错了什么,我该如何解决?我试过谷歌,但我似乎无法理解问题/如何解决它。

0 投票
1 回答
326 浏览

python - 如何将 arg 从命令传递到子命令 Discord py

假设我有以下命令和子命令:

我希望父命令将名称或 id 转换为对象,然后将该对象传递给 subcommands。有没有办法做到这一点?像ctx.invoked_subcommand.pass(channel_object)什么?

0 投票
0 回答
176 浏览

python - 子命令和默认值的 Python argparse 顺序

我已经为此苦苦挣扎了很长时间,所以我想为另一个命令执行子命令,该命令将忽略与 相反的顺序subparsers = parser.add_subparsers(),因为子解析器可以在参数末尾或单独执行时执行。

例如 test.py 正在通过 SSH 连接到设备并执行一些命令,我​​可以在终端中看到输出,但我想将其保存为 filename_test_1 (默认名称为command_output)为 .txt 或 .csv (默认格式是txt)。

我希望我能--save以各种可能的方式进行(例如,仅在 -->之后保留-nand-f执行):--saveerror: argument -f/--format: can't be used before --save

我基于此代码,但无法将其重写为我自己的需要。问题之一--save是不是store_true争论:

也许有一个简单的方法?我也想保持“好”的格式--help

注意:我想使用基本库,所以我将继续使用 argparse :v

0 投票
1 回答
68 浏览

go - 你如何安装子命令?

我在 Go v. 1.15.8 darwin/amd64 中收到以下错误消息

main.go 中的代码如下所示:

我知道子命令位于:https ://github.com/google/subcommands 与 git repo 在这里:https ://github.com/google/subcommands.git

但是我该如何安装呢?

当我做:

我收到以下错误消息:

当我打开我的网络浏览器并转到:https ://github.com/google/subcommands/我可以看到没有问题的网页。那么为什么“go get”命令会遇到问题呢?

我究竟做错了什么?

0 投票
1 回答
45 浏览

shell - 在不同的目录中执行子命令作为鱼中的当前命令?

我想从与当前目录不同的目录中移动文件。这是我想到的解决方案:

mv (cd ~/Downloads; ls -t | head -1 | xargs -I {} readlink -f {}) ./

可能有更好的方法,但在此过程中,我发现我对保留在子命令中的目录更改的期望是错误的:运行 cd 会更改mv正在执行的目录。

那么,有没有办法只为当前子命令更改目录,而不影响顶部命令?