内建命令和标志
provided by cmdr
内建命令与支持
截至 cmdr v2.1.1,我们提供如下的内建命令和标志。
其中部分命令的具体实现暂未提上日程,如果你重度依赖这些功能,请使用 cmdr v1 并在 Discuss 留下 Requests。
当前我们的重心在于基于 Redesign Archi 的基础尽可能地保持核心代码的工作方式并尽快冻结 API。既然这些暂缓的功能并非 CLI app 的必需品,那么我们暂时押后是有理由的。
Commands
generatemanualdoc(NOT-YET)shell
sbomversionhelp
help Command
help 命令类似于 --help 标志。
DONE: 我们有计划在这里制作一个问答子系统。[部分已实现]
请参考下一节:Help Subsystem
version Command
version 主要提供版本号以及构建信息。
在产品发布的构建脚本中,你应该遵循 产品发布 所提到的要点,为可执行文件写入构建预设值,才能保证 version 输出的信息有效和有意义。
参阅 --version
两种形式提供的信息的详尽程度略有不同。
注意,app version/app versions 命令 和 app --version 标志的功能是等价的。
sbom Command
以 YAML 格式打印标准的 Golang SBOM 信息。
此信息可以被集成到供应链管理系统中。
generate Command
gen 命令的主要用途是生成 man 手册,以及生成自动完成脚本。
generate doc (NOT-YET)
在 cmdr.v1,这个命令主要用于生成 markdown 页面。
但在 cmdr.v2,它没有被实现。相应计划暂时不会提上日程。
generate man
为你的 app 的全部命令创建相应的 manpage 页面。例如对于 jump to 命令会生成名为 app-jump-to.man 的文件,此外,对于根命令来说,会生成 app.man 文件。
这些文件通常应该被部署到 man/man1/app/ 中,对于典型的 GNU-like 系统,Linux-like 系统,或者 Unix-like 系统来说,经常可能被部署到 MANPAGE 环境变量所指向的目录中。为了确认哪些文件夹被用于放置 manpages,你可以运行系统自带的命令 manpath 来获得信息:
有的时候,也可以这样来确定:
默认时,generate man 在当前文件夹中创建子目录 man1 来放置将要生成的 manpages,你可以稍后处理这些输出文件。一个实际运行的例子看起来像这样:
对于终端用户来说,他们可以以 manpage 方式阅读和查看帮助屏:
--man 的目的是让 cmdr 将帮助屏以 manpage 格式方式直接输出给 man 命令。
尽管如此,在产品发布时部署全套的 man 1 pages 是开发者应尽的义务。因为只有这样,man 1 app 才能工作,同时用户也才能在 man 阅读系统中导航和查看更多的相关命令。
See also:
generate shell
cmdr.v2 和 v1 现在(v2.1.11)完成了 Shell 自动完成脚本的生成。
一般来说,你可以自动部署 自动完成脚本 到你的 zsh 环境:
但对于其他 Shell 环境来说,你可能需要手动部署生成的 自动完成脚本 文件到恰当的位置。
app generate shell 会自动检测下列 shell 环境,并试图为你完成大多数任务:
- zsh
- bash
- fish
- elvish (NOT YET)
- fig-shell (NOT YET)
- powershell
理论上,这些 shell 中的自动完成特性将被正确激活。但遗憾的是,我们没有对诸如 fish,powershell 等环境做充分的测试。
在 zsh 环境中,一个正在自动完成中的子命令选项如下图所示:

类似的,一个正在自动完成中的多级子命令如下图所示:

Flags
--help: 打印帮助屏--man: 打印帮助屏,但是以 manpage 方式--version: 打印版本号信息--build-info: 打印构建信息--version-sim: 临时修改呈现的版本号--strict-mode: STRICT Mode & level--no-color: No Color Mode & Level--quiet: Quiet Mode & Level--verbose: Verbose Mode & Level--debug: Debug Mode & Level--config=FILE提供一个主配置文件,略过内建搜索方案~~tree: 打印全部子命令(及其参数)~~debug: 打印用于调试的信息
其中,--man 为当前命令生成 man.1 手册并调用系统命令 man 来阅读它。
简要阐释
--version-sim 可用于替换在构建时固化的版本号,向外报告一个定制的临时版本号。
这个功能有时候有利于在预发布模式时模拟仿真多个版本号,有时候也可以用于做灰度测试或灰度发布。
四种模式:STRICT,NO-COLOR,QUIET 和 VERBOSE。
它们被抽象定义在 hedzr/is 的 Env 对象中,因此你需要对 Env 进行操作。
~~tree 以及 ~~tree -vvv 已经多次介绍过,它能为你呈现当前的子命令体系。
~~debug ~~env ... 主要用于打印调试目的的内部信息,包括内部 Store 的键值对。
FORCE_DEFAULT_ACTION=1 可以启用内建的 ActionDefault 命令,它也会打印用于调试目的的信息。
version
version 主要提供版本号以及构建信息。
在产品发布的构建脚本中,你应该遵循 产品发布 所提到的要点,为可执行文件写入构建预设值,才能保证 version 输出的信息有效和有意义。
两种形式提供的信息的详尽程度略有不同。
build-info
--build-info/--built-info 主要提供版本号以及构建信息。
在产品发布的构建脚本中,你应该遵循 产品发布 所提到的要点,为可执行文件写入构建预设值,才能保证 version 输出的信息有效和有意义。
两种形式提供的信息的详尽程度略有不同。
Tree
The ~~tree flag has the leading double tilde characters ~~.
The optional -vvv can enable a verbose mode, in which the flags, the vendor-hidden items will be shown in list.
This flag can print the commands (and flags) with hierarchical tree mode.
额外的话题
How is this guide?
Last updated on