Builtin Commands & Flags
provided by cmdr
内建命令与支持
截至 cmdr v2.1.1,我们提供如下的内建命令和标志。
其中部分命令的具体实现暂未提上日程,如果你重度依赖这些功能,请使用 cmdr v1 并在 Discuss 留下 Requests。
当前我们的重心在于基于 Redesign Archi 的基础尽可能地保持核心代码的工作方式并尽快冻结 API。既然这些暂缓的功能并非 CLI app 的必需品,那么我们暂时押后是有理由的。
Commands
generate
manual
doc
(NOT-YET)shell
sbom
version
help
help
Command
help
命令类似于 --help
标志。
我们有计划在这里制作一个问答子系统。[部分已实现]
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 等环境做充分的测试。
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 tlide 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