使用PicoCLI的子命令的显示选项

时间:2019-06-10 01:05:54

标签: picocli

我正在使用PicoCLI v4.0.0-beta-1b。我正在使用从父命令链接的不同子命令。当我启动CLI时,将显示父命令的可选参数,但子命令则不显示。子命令仅显示在命令下方(但没有选项)。 如何确保子命令的选项也出现在CLI中?

Options:
  -a, --autocomplete   Generate sample autocomplete
  -h, --help           Display this help message.
  -v, --verbose        Verbose mode. Helpful for troubleshooting.
  -V, --version        Show version info and exit.
Commands:
  abc
  def 

1 个答案:

答案 0 :(得分:1)

默认情况下,picocli仅显示命令子命令的概述,而没有详细信息。这遵循git之类的其他命令套件的约定。这样的想法是,最终用户始终可以通过为该特定子命令(例如git commit --helpgit help commit)寻求帮助来获取其他子命令的详细信息。

虽然这是一个有用的默认值,但如果您不想要这样,则picocli使用帮助非常customizable

picocli使用情况消息包含以下部分:

  • 标题标题
  • 标题
  • 简介标题
  • 简介
  • 描述标题
  • 说明
  • 位置参数列表标题
  • 位置参数列表
  • 选项列表标题
  • 选项列表
  • 命令列表标题
  • 命令列表
  • 退出代码列表标题(自4.0开始)
  • 退出代码列表(自4.0开始)
  • 页脚标题
  • 页脚

每个部分都有自己的IHelpSectionRenderer,您可以通过删除,重新排序或替换这些帮助部分渲染器来更改使用帮助。

以下是入门的示例: https://github.com/remkop/picocli/blob/master/picocli-examples/src/main/java/picocli/examples/customhelp/ShowAll.java

上面的示例在命令列表中有一个自定义IHelpSectionRenderer,以显示命令,子命令和子子命令等的完整层次结构。您可能想做类似的事情,但要显示子命令的选项代替。

您需要熟悉picocli Help API的一些细节,例如TextTableLayoutIOptionRenderer等。