Categorygithub.com/issue9/cmdopt
modulepackage
0.13.1
Repository: https://github.com/issue9/cmdopt.git
Documentation: pkg.go.dev

# README

cmdopt Go license codecov PkgGoDev Go version

cmdopt 命令行选项的增强,可以轻松处理子命令。高度重用 flag 包。

opt := cmdopt.New(...)

// 子命令 build,为一个 flag.FlagSet 实例
build := opt.New("build", "title", "usage", func(f *flag.FlagSet) DoFunc {
    v := f.Bool("v", "false", ...)

    return func(output io.Writer)error{
        if v {
            ...
        } else {
            output.Write([]byte("build"))
        }
    }
})

// 子命令 install
install := opt.New("install", "title", "usage", func(*flag.FlagSet) DoFunc {
    return func(output io.Writer)error{
        output.Write([]byte("install"))
    }
})

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

# Functions

Help 注册 help 子命令.
New 声明带有子命令的命令行处理对象 output 表示命令行信息的输出通道; errorHandling 表示出错时的处理方式; cmd 非子命令的参数设定,可以为空; usageTemplate 命令行的文字说明模板; notFound 表示找不到子命令时需要返回的文字说明,若为空,则采用 usageTemplate 处理后的内容; usageTemplate 可以包含了以下几个占位符: - {{flags}} 参数说明,输出时被参数替换,如果没有可以为空; - {{commands}} 子命令说明,输出时被子命令列表替换,如果没有可以为空;.

# Structs

CmdOpt 带子命令的命令行操作.

# Type aliases

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 只用于绑定参数,不应该修改其相关配置。.
DoFunc 命令行的实际执行方法 io.Writer 用于内容的输出,如果有错误信息应该通过返回值返回。.