hzDocs
hzDocs
文章 / 文档hedzr.com首页

cmdr series

介绍 cmdr

Guide

你的首个 CLI app更适合工程实践的版本
循序渐进
基本概念
命令命令:执行外部程序命令:预设参数命令:重定向命令:动态命令清单命令:在配置文件中定义别名清单命令:事件响应函数标志标志:必须项标志:可翻转组标志:枚举值标志:`Head -1` 风格标志:调用外部工具获得输入标志:自动否定标志:加号 `+` 前缀标志:事件响应函数解析结果内建命令和标志帮助子系统可共享共存的 app 实例辨析顶级函数WithOptsBackstage
如何……
Auto-close the ClosersRead config into structUsing is DetectorsUsing Store

References

What's New
Packages

Others

Examples
Blueprint
产品发布
产品发布之前
介绍 cmdr-cxx

Guide

cmdr supports

Intro

Guide

More features

References

Others

evendeep(-go)

Guide

Usagesdeepcopydeepdiffdeepequal
logg/slog(-go)

Guide

Guide

others

Components
trie-cxx

Guide

Guide

links

On Github

辨析

the differences between ...

辨析

cmdr.App() and cmd.App()

自 cmdr v2.1.11 起,我们支持声明多个 app 实例,彼此互不相干。

参见 Shared App

所以,从 OnAction Handler 中通过 cmd 来取得 app 对象就是唯一的途径。

除此而外,在大多数 apps 中,cmd.App() 取得的 app 实例和 cmdr.App() 取得的是完全一致的。

cmd.App() 与 cmd.Root().App()

在多数情况下,两者是相同的。

但对于 DynCommand 来说,cmd.App() 有可能没有正确值,这取决于 litecmd.go 中如何实现一个相似的 Cmd 对象结构。

在当前的 liteCmdS 实现中,没有维持正确的 root 信息,所以它的 App() 接口可能无法正确返回对象。

在这种情况下,cmd.Root().App() 就是取得 app 实例的正确方式,而 cmd.App() 可能并未得到正确值。

其原因在于,cmd.Root() 获得的 RootCommand 是 cmdr 内置对象,它完全遵守了协议,对 Root,Owner,App 等关联对象的连接是被 cmdr 所正确约束的。

额外的话题

With Options

Package Level Functions

What is Next?

Components

Components

On Github

How is this guide?

最后更新于

目录

辨析
cmdr.App() and cmd.App()
cmd.App() 与 cmd.Root().App()
额外的话题