Documentation ¶
Overview ¶
Package cmdopt 用于创建子命令功能的命令行
Index ¶
- func Help(opt *CmdOpt, name, title, usage string)
- type CmdOpt
- func (opt *CmdOpt) Command(name string) (title, usage string, found bool)
- func (opt *CmdOpt) Commands() []string
- func (opt *CmdOpt) Exec(args []string) error
- func (opt *CmdOpt) New(name, title, usage string, cmd CommandFunc)
- func (opt *CmdOpt) NewPlain(name, title, usage string, exec func(io.Writer, []string) error)
- func (opt *CmdOpt) Output() io.Writer
- func (opt *CmdOpt) SetOutput(w io.Writer)
- func (opt *CmdOpt) Usage() string
- type CommandFunc
- type DoFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CmdOpt ¶
type CmdOpt struct {
// contains filtered or unexported fields
}
CmdOpt 带子命令的命令行操作
func New ¶
func New(output io.Writer, errorHandling flag.ErrorHandling, usageTemplate string, cmd CommandFunc, notFound func(string) string) *CmdOpt
New 声明带有子命令的命令行处理对象
output 表示命令行信息的输出通道; errorHandling 表示出错时的处理方式; cmd 非子命令的参数设定,可以为空; usageTemplate 命令行的文字说明模板; notFound 表示找不到子命令时需要返回的文字说明,若为空,则采用 usageTemplate 处理后的内容;
usageTemplate 可以包含了以下几个占位符:
- {{flags}} 参数说明,输出时被参数替换,如果没有可以为空;
- {{commands}} 子命令说明,输出时被子命令列表替换,如果没有可以为空;
func (*CmdOpt) New ¶
func (opt *CmdOpt) New(name, title, usage string, cmd CommandFunc)
New 注册一条新的子命令
name 为子命令的名称,必须唯一; cmd 为该条子命令执行的函数体,具体可参考 CommandFunc; usage 为该条子命令的帮助内容。可以包含 {{flags}} 占位符,表示参数信息。
func (*CmdOpt) NewPlain ¶ added in v0.13.0
NewPlain 添加自行处理参数的子命令
用户需要在 exec 中自行处理命令行参数,exec 原型如下:
func(output io.Writer, args []string) error
output 即为 CmdOpt.Output,args 为子命令的参数,不包含子命令本身。
name, title 和 usage 参数可参考 CmdOpt.New,唯一不同点是 usage 不会处理 {{flags}} 占位符。
type CommandFunc ¶ added in v0.10.0
CommandFunc 子命令的初始化方法
FlagSet 可用于绑定各个命令行参数; 返回值 DoFunc 表示实际执行的函数;
一般与 DoFunc 组合使用:
func(fs *flag.FlagSet) DoFunc { f1 := fs.Bool("f1", true, "usage") return func(w io.Writer) error { if *f1 { TODO } } }
在 CommandFunc 中初始化 flag 参数,并在其返回函数中作实际处理,这样可以防止大量的全局变量的声明。
如非必要情况,CommandFunc 的 FlagSet 只用于绑定参数,不应该修改其相关配置。