问题标签 [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.
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:
- Option not present (we get
null
) - Option present with no value (we get empty string)
- 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?
java - 带有 Picocli 的 CLI:在调用子命令之前调用主命令
由于子命令支持(和基于注释的声明),我从 Apache Commons CLI 切换到 Picocli。
考虑一个命令行工具,比如git
,带有子命令,比如push
. Git 有一个主开关--verbose
或用于在所有子命令-v
中启用详细模式。如何实现在任何子命令之前执行的主开关?
这是我的测试
输出是
我希望,GitApp.call
在调用子命令之前调用它。但只有 sub 命令被调用。
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,地图选项与其他选项不同,即使在不允许集群短选项的情况下,支持前者也会很有用。
command-line-interface - Picocli:使用可选值指定选项的最佳方法,当未指定值时打印当前值
我正在编写一个 REPL(所以我在内部使用 picocli 来解析在应用程序中键入的命令,而不是解析命令行参数),并且我有一个带有选项的命令,我希望它的行为如下:
也就是说,如果选项没有指定值,则打印参数的当前值,但如果指定了值,则设置该值。我想这样做:
这是最好的方法吗?是否有另一种方法来捕获描述中的默认值,同时仍然允许setValue
知道没有指定任何值?
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 )
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 在此配置中不适合我。谢谢!
picocli - 如何减少由于反射导致的 picocli 应用程序启动缓慢
Picocli 必须自省命令树。这样做需要为每个命令加载域对象类,这会减慢 jvm 启动速度。
有哪些选择可以避免这种启动滞后?我提出的一种解决方案在https://github.com/remkop/picocli/issues/482中进行了描述:
我正在使用反射将任何类加载推迟到选择命令之后。这样,只有命令类本身被加载,最后是实现用户请求的单个命令的类:
一个具体的表扬类:
似乎https://github.com/remkop/picocli/issues/500可能会为此提供最终解决方案。在那之前还有什么其他选择?
command-line - Picocli:如何始终显示标题/横幅
Picocli 提供了在@Command
注释中添加漂亮标题的功能,例如:
如何在程序运行时始终显示该标题/横幅,而不在两个地方复制此横幅?
command-line-arguments - Picocli:如何使子命令成为必需
我有一个带有子命令的命令。在我的应用程序中,我希望用户必须指定子命令。我该怎么做?
java - 使用 picocli 的可扩展应用程序。最佳实践问题
假设我的项目有很多逻辑,并且有几个入口点,它们是 CLI 命令。
我用 注释我的入口点@Command
,初始化我的@Parameters
和@Option
注释的字段并执行逻辑,这不再需要 CLI。
在我看来,为main
每个带注释的类声明 1 个方法适合我@Command
,但是,我不确定这是否是个好主意。
也许某种CommandFactory
是必要的?
我以前从未构建过 CLI 应用程序或使用过 picocli,所以如果我的思考过程是错误的,请指出这一点。