# Guide
In this guide we will walk through the various parts of cmdr
. We will cover:
- The basic layout of a
cmdr
application - Adding flags to your app
- Define actions that get run
- Create SubCommands for additional functionality
- Define a custom banner
- 使用环境变量
- 使用外部配置文件
- Uses the advanced features of
cmdr
, such as Toggleable Flags Group, ... - Using the
Option Store
to get the app's Options - 从 Option Store 中提取配置数据
Option Store 中的配置数据来自这些地方:
通过
cmdr.NewBool
,cmdr.NewString
等接口定义的命令行标志信息中提供的缺省值。例如:cmdr.NewBool(false). Titles("enable-ueh", "ueh"). EnvKeys("ENABLE_UEH"). Description("Enables the unhandled exception handler?"). AttachTo(root)
1
2
3
4
5这里定义了一个 Bool 类型的标志(Flag),其默认值为 false,如果终端用户没有作出指定,则 Option Store 中会包含该条目且具有 bool 值 false。你可以通过
cmdr.GetBoolR('enable-ueh')
取得该值。标志总是带有默认值 false,一般较少会使用 true值。
Toggleable Flags Group 例外,通常在组里会有一个 Flag 具有默认值 true。
通过命令行参数指定的。例如:
$ go run ./cli --enable-ueh
1这里会通过命令行将 enable-ueh 的值设置为 true。
此时,通过
cmdr.GetBoolR('enable-ueh')
取得的值将会为 true。通过环境变量指定的。例如:
ENABLE_UEH=1 go run /cli
1如果在定义 Flag 是没有通过
.EnvKeys()
指定环境变量名,cmdr
会试图查找自动化命名的环境变量名。例如此例中,自动化的环境变量名应该是APP_ENABLE_UEH
,请参考cmdr.WithEnvPrefix()
的相关说明。通过配置文件装入的。例如在主配置文件中包含有如下条目:
app: # 这是配置文件的前缀,可以通过 cmdr.WithOptionsPrefix() 自定义 simple: # 这是通过 cmdr.Root(appName, version) 所指定的应用程序名 enable-ueh: true # 字段名称应该等于 Flag 的 Full 字段值
1
2
3
4通过
cmdr.Set(keyPath, value)
设置的。