问题标签 [picocli]

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

java - Picocli 不会在每次执行时重置集合字段?

我最近将我的项目升级到 Picocli 4.2.0,包括删除所有不推荐使用的方法调用,并且我一直在继续我在这里描述的工作。我又遇到了同样的问题——我有一个似乎没有重置的字段。与我的其他问题唯一不同的是,现在该字段是一个集合。代码如下所示:

(此处提供完整代码。)

具体来说,productionsToEnable似乎没有重置。调用的方式是单元测试的一部分:

(此处提供完整代码。)

当最后一次调用命令时"c",最后一次调用的字符串production watch仍然存在。productionsToEnableproduction watcheval

请注意,上面的代码链接位于jsoar-command-performance分支上,以防有助于仔细查看。

0 投票
1 回答
538 浏览

java - Picocli:是否可以在名称中定义带有空格的选项?

我用谷歌搜索了一下,还搜索了 StackOverflow,当然还有 Picocli 文档,但没有找到任何解决方案。

我工作的公司在批处理程序中使用特殊格式的命令行参数:

(不要问我为什么用这种格式,我已经质疑过了,没有得到正确的答案。)现在我想用Picocli进行命令行解析。但是,我无法让它与我们使用的参数格式一起使用,因为空间使 Picocli 认为这是两个单独的参数,因此它不会将它们识别为我定义的参数。

这显然行不通:

使用 -VAR BOOLEANARG=FALSE 调用程序不会有任何效果。

有没有办法自定义定义那些包含空格的特殊选项名称?或者我该怎么做?我也不允许将多个参数作为参数折叠到一个 -VAR 选项中。

非常感谢您的帮助。谢谢和最好的问候, 罗莎

0 投票
1 回答
87 浏览

java - PicoCli 相互依赖选项问题(解析值)

我在下面有以下代码。

我的用例是,当使用选项--install 时,您还必须使用选项--version。这在使用下面的依赖组时效果很好。

但是我无法获得变量版本的值。我如何提取/解决它?有什么方法可以通过 call() 方法做到这一点?

感谢您的帮助:D

0 投票
1 回答
212 浏览

java - Bash 去除传递给 java 命令行应用程序的引号

我有一个使用 Picocli 编写的 java 命令行应用程序,我试图向它传递一个字符串参数,但每次我尝试 bash 时都会去掉引号并以三个参数结束。

这是我在 bash 中收到的输出

我尝试使用转义单引号(\')和双引号(\"),转义空格(\),甚至单引号和双引号(带和不带),但它们都不起作用。简单的解决方案是将包重命名为 extras_lib_v0 .1.4.cpkg 但其他方法也会有同样的问题。

0 投票
1 回答
51 浏览

picocli - Picocli:任意长度的成对参数

在 Picocli 中,是否可以配对任意长度的参数?例如:

其中每一对必须有一个名字和一个等级,但总长度是未知的,即:

参数图是最接近的,可能会起作用,例如

会解析:

进入地图,但如果不存在平等会更好......

0 投票
1 回答
1343 浏览

java - 基于主要选项的 Picocli 所需选项选择

我想用以下格式解析带有 picocli 的选项:

mode是一个enum带有值的{ CLIENT, SERVER }

  • 如果mode == CLIENT,-c-d选项是强制性的,并且-e,-f不能使用。
  • 如果mode == SERVER,-e-f选项是强制性的,并且-c,-d不能使用。

换句话说,我想根据一个关键选项来选择所需的选项。这在picocli中可能吗?

0 投票
1 回答
100 浏览

java - 无法解释的 Singleton / Picocli 行为

我正在编写一些代码,但我无法弄清楚我的错误是怎么回事。我希望这里有人可以给我一些答案。这是我的代码(相关部分):

如您所见,我的班级是单身人士。注释来自 picoli,我用它来解析命令行参数。-callsSystem.out用于调试。这是我无法解释的行为:

当我使用例如“-h”作为参数启动我的应用程序时,我得到的帮助打印得很好。显示System.out.println单例已创建并set_validate()使用默认值调用。但是当我--validate用作论据时,情况就会改变。

由于某种原因,构造函数和默认集被连续调用两次。之后,set_validate() 被调用true(因为它应该)。但是,似乎第一次调用设置了静态实例变量,而最后一次调用 true 是在第二个实例上完成的(我的理论)。结果,当我从我的主方法(在另一个类中)检查我的单例实例的状态时,我得到了错误,因为它没有在正确的实例中设置_validatevalidate()

我使用搜索引擎检查:

  1. 除了静态单例实例(正如预期的那样,因为它是私有的)之外,不会在任何地方调用构造函数。
  2. _validate除了我发布的代码外,其他地方都无法访问。
  3. set_validate()不在任何地方调用。只有 Picocli 调用它。

我不知道接下来要检查什么。有任何想法吗?

问候

托尔斯滕

编辑: AppData是持有数据的多个类之一。它们都被收集在 Picocli 的一个大类中,如下所示:

在我的主要方法中是这样使用的:

0 投票
1 回答
129 浏览

picocli - picocli : 解析没有样板的参数

我通常将所有命令行选项存储到不同的类,例如CliArguments。这避免了主类中的噪音。这就是我对picocli所拥有的:

如何避免锅炉板方法,pargeArgs(String[])?从技术上讲, CliArguments类不应实现CallableRunnable。我可以使MyApp成为CallableRunnable。但是对于CommandLinenew MyApp()不是命令,new CliArguments()是。

如果我想做这样的事情:

如何在MyApp中仍具有执行控制权的同时将所有@Option规范推到另一个类CliArguments

我确信我错过了一些直截了当的东西。

0 投票
1 回答
128 浏览

picocli - picocli : ArgGroup 中的依赖参数

我的问题与此处提出的问题相似且更简单。

我有三个选项,-A, -A1, -A2(从概念上讲,是单个组的一部分)。所需的关系如下:

  1. 这些都不是必需的
  2. -A应与至少一项-A1-A2
  3. 两者-A1-A2可以单独给出-A

换句话说:

  • 有效规范:-A -A1-A -A2-A -A1 -A2
  • 无效规范:-A-A1-A2-A1 -A2

这就是我使用两个@ArgGroups:

有没有更简单的方法?

谢谢!

0 投票
1 回答
228 浏览

picocli - picocli : List<> 选项,在@ArgGroup 中使用,在短用法字符串中重复

在 中使用List<>选项时@ArgGroup,它会在简短的使用帮助中重复出现。考虑以下代码:

显示以下输出

我期待输出

@ArgGroup由于其他原因在代码中需要它,但在这个玩具示例中似乎是徒劳的。