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

java - Picocli, how to recognise presence of option with optional value and custom type converter

Picocli v2.3.0.

Custom type converter is registered and working correctly when a value is provided (mycommand --number-headings 2-5). But numberHeadings remains null if called like: mycommand --number-headings.

Example at http://picocli.info/man/2.x/#_optional_values suggests that a String typed option will receive an empty string when no value is provided.

So the empty string is the default value when option is present but no value is provided.

This allows us to distinguish between 3 situations:

  1. Option not present (we get null)
  2. Option present with no value (we get empty string)
  3. Option present with value (we get value)

With a custom ITypeConverter, the convert() method of the ITypeConverter is not called when there is no value provided. So what is the equivalent default value when option is present but no value is provided for custom types?

0 投票
2 回答
2421 浏览

java - 带有 Picocli 的 CLI:在调用子命令之前调用主命令

由于子命令支持(和基于注释的声明),我从 Apache Commons CLI 切换到 Picocli。

考虑一个命令行工具,比如git,带有子命令,比如push. Git 有一个主开关--verbose或用于在所有子命令-v中启用详细模式。如何实现在任何子命令之前执行的主开关?

这是我的测试

输出是

我希望,GitApp.call在调用子命令之前调用它。但只有 sub 命令被调用。

0 投票
1 回答
231 浏览

command-line-interface - Picocli:当不允许集群短选项时,是否可以将选项附加到参数?

另见https://github.com/remkop/picocli/issues/488

我有一个使用Map字段作为选项的应用程序:

因此用户可以指定如下值:

Picocli 有一个选项可以使用CommandLine.setPosixClusteredShortOptionsAllowed(false).

However, in that configuration, options are no longer recognized when the option value is attached to the option name. 上面的示例-Pmyprop=myvalue失败并出现异常:

当我用空格分隔选项名称-P和选项值(键值对)时,该值被正确解析:

这是预期的行为吗?IMO,地图选项与其他选项不同,即使在不允许集群短选项的情况下,支持前者也会很有用。

0 投票
2 回答
2260 浏览

command-line-interface - Picocli:使用可选值指定选项的最佳方法,当未指定值时打印当前值

我正在编写一个 REPL(所以我在内部使用 picocli 来解析在应用程序中键入的命令,而不是解析命令行参数),并且我有一个带有选项的命令,我希望它的行为如下:

也就是说,如果选项没有指定值,则打印参数的当前值,但如果指定了值,则设置该值。我想这样做:

这是最好的方法吗?是否有另一种方法来捕获描述中的默认值,同时仍然允许setValue知道没有指定任何值?

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

0 投票
1 回答
187 浏览

command-line-interface - Picocli: how to access subcommands after parseWithHandler(new RunAll(), args)?

I have a command with subcommands, which are registered declaratively, and I'm interested in using this style of command line processing:

However, for unit testing purposes, I want to access the subcommand object to see if it has the correct options set, etc. Is there a way to access the subcommand object when using RunAll?

(See also https://github.com/remkop/picocli/issues/489 )

0 投票
1 回答
817 浏览

groovy - Groovy-Eclipse 2.5.2:java.lang.ClassNotFoundException:picocli.CommandLine$ParameterException

我正在使用带有 Groovy-Eclipse 2.9.2/4.5 插件的 Eclipse 4.5,我认为它应该有 Groovy 2.5 编译器。但是,它没有任何 picocli 支持,所以我将它添加groovy-cli-picocli-2.5.2-indy.jar到我的类路径中并且能够编译。但是#2,当尝试通过 Eclipse 运行脚本时,我得到:

看起来groovy-cli-picocli-2.5.2-indy.jar根本没有CommandLine上课。

我只会从成熟的 picocli 发行版中扔罐子,但我的印象是它们都必须以某种方式很好地包装到 Eclipse Groovy 库中groovy.cli.picocli.CliBuilder

我的 Groovy 2.5.2 是否缺少此功能,或者我是否以某种方式错过了它应该如何工作的问题,因为 picocli 在此配置中不适合我。谢谢!

0 投票
1 回答
176 浏览

picocli - 如何减少由于反射导致的 picocli 应用程序启动缓慢

Picocli 必须自省命令树。这样做需要为每个命令加载域对象类,这会减慢 jvm 启动速度。

有哪些选择可以避免这种启动滞后?我提出的一种解决方案在https://github.com/remkop/picocli/issues/482中进行了描述:

我正在使用反射将任何类加载推迟到选择命令之后。这样,只有命令类本身被加载,最后是实现用户请求的单个命令的类:

一个具体的表扬类:

似乎https://github.com/remkop/picocli/issues/500可能会为此提供最终解决方案。在那之前还有什么其他选择?

0 投票
2 回答
274 浏览

command-line - Picocli:如何始终显示标题/横幅

Picocli 提供了在@Command注释中添加漂亮标题的功能,例如:

如何在程序运行时始终显示该标题/横幅,而不在两个地方复制此横幅?

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

0 投票
1 回答
1397 浏览

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

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

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

0 投票
1 回答
190 浏览

java - 使用 picocli 的可扩展应用程序。最佳实践问题

假设我的项目有很多逻辑,并且有几个入口点,它们是 CLI 命令。

我用 注释我的入口点@Command,初始化我的@Parameters@Option注释的字段并执行逻辑,这不再需要 CLI。

在我看来,为main每个带注释的类声明 1 个方法适合我@Command,但是,我不确定这是否是个好主意。

也许某种CommandFactory是必要的?

我以前从未构建过 CLI 应用程序或使用过 picocli,所以如果我的思考过程是错误的,请指出这一点。