cmdr: github.com/hedzr/cmdr Index | Files | Directories

package cmdr

import "github.com/hedzr/cmdr"

Package cmdr interprets command-line arguments with POSIX style.

Index

Package Files

base_opt.go build_xref.go clone.go clone_zero_go1.13.go command.go def.errors.go def.go deprecated.go dir.go doc.go exec.go exec_match.go exec_unknown.go exec_with_options.go flag.go fs_wrap.go generate_cmds.go generate_shell.go handlers.go logex.go logex.lvl.go match.go opt.go opt_command_impl.go opt_flag_impl.go opt_ops.go options.go options_cvt.go options_impl.go options_watch.go predefined_locations.go print.go print_colors.go print_painter.go print_painter_help.go print_painter_man.go print_painter_mkd.go print_tree.go ptpkg.go replaceall_go1.12.go sc_wrap.go term_wrap.go tool.go types.go walk.go whitespaces.go

Constants

const (

    // UnsortedGroup for commands and flags
    UnsortedGroup = "zzzz.unsorted"
    // SysMgmtGroup for commands and flags
    SysMgmtGroup = "zzz9.Misc"

    // DefaultEditor is 'vim'
    DefaultEditor = "vim"

    // ExternalToolEditor environment variable name, EDITOR is fit for most of shells.
    ExternalToolEditor = "EDITOR"

    // ExternalToolPasswordInput enables secure password input without echo.
    ExternalToolPasswordInput = "PASSWD"
)
const (
    // AppName const
    AppName = "cmdr"
    // Version const
    Version = "1.6.47"
    // VersionInt const
    VersionInt = 0x01062f
)
const (

    // FgBlack terminal color code
    FgBlack = 30
    // FgRed terminal color code
    FgRed = 31
    // FgGreen terminal color code
    FgGreen = 32
    // FgYellow terminal color code
    FgYellow = 33
    // FgBlue terminal color code
    FgBlue = 34
    // FgMagenta terminal color code
    FgMagenta = 35
    // FgCyan terminal color code
    FgCyan = 36
    // FgLightGray terminal color code
    FgLightGray = 37
    // FgDarkGray terminal color code
    FgDarkGray = 90
    // FgLightRed terminal color code
    FgLightRed = 91
    // FgLightGreen terminal color code
    FgLightGreen = 92
    // FgLightYellow terminal color code
    FgLightYellow = 93
    // FgLightBlue terminal color code
    FgLightBlue = 94
    // FgLightMagenta terminal color code
    FgLightMagenta = 95
    // FgLightCyan terminal color code
    FgLightCyan = 96
    // FgWhite terminal color code
    FgWhite = 97

    // BgNormal terminal color code
    BgNormal = 0
    // BgBoldOrBright terminal color code
    BgBoldOrBright = 1
    // BgDim terminal color code
    BgDim = 2
    // BgItalic terminal color code
    BgItalic = 3
    // BgUnderline terminal color code
    BgUnderline = 4
    // BgUlink terminal color code
    BgUlink = 5
    // BgHidden terminal color code
    BgHidden = 8

    // DarkColor terminal color code
    DarkColor = FgLightGray
)

Variables

var (
    // GormDefaultCopier used for gorm
    GormDefaultCopier = &copierImpl{KeepIfFromIsNil: true, ZeroIfEqualsFrom: true, KeepIfFromIsZero: true, EachFieldAlways: true}
    // StandardCopier is a normal copier
    StandardCopier = &copierImpl{}
)
var (
    // ErrShouldBeStopException tips `Exec()` cancelled the following actions after `PreAction()`
    ErrShouldBeStopException = newErrorWithMsg("stop me right now")

    // ErrBadArg is a generic error for user
    ErrBadArg = newErrorWithMsg("bad argument")
)
var (

    // CurrentDescColor the print color for description line
    CurrentDescColor = FgDarkGray
    // CurrentDefaultValueColor the print color for default value line
    CurrentDefaultValueColor = FgDarkGray
    // CurrentGroupTitleColor the print color for titles
    CurrentGroupTitleColor = DarkColor
)
var AllLevels = []Level{
    PanicLevel,
    FatalLevel,
    ErrorLevel,
    WarnLevel,
    InfoLevel,
    DebugLevel,
    TraceLevel,
    OffLevel,
}

AllLevels is a constant exposing all logging levels

var SavedOsArgs []string

SavedOsArgs is a copy of os.Args, just for testing

func AddOnConfigLoadedListener Uses

func AddOnConfigLoadedListener(c ConfigReloaded)

AddOnConfigLoadedListener adds an functor on config loaded and merged

func AsJSON Uses

func AsJSON() (b []byte)

AsJSON returns a json string bytes about all options

func AsJSONExt Uses

func AsJSONExt() (b []byte, err error)

AsJSONExt returns a json string bytes about all options

func AsToml Uses

func AsToml() (b []byte)

AsToml returns a toml string bytes about all options

func AsTomlExt Uses

func AsTomlExt() (b []byte, err error)

AsTomlExt returns a toml string bytes about all options

func AsYaml Uses

func AsYaml() (b []byte)

AsYaml returns a yaml string bytes about all options

func AsYamlExt Uses

func AsYamlExt() (b []byte, err error)

AsYamlExt returns a yaml string bytes about all options

func Clone Uses

func Clone(fromValue, toValue interface{}) interface{}

Clone deep copy source to target

func DeleteKey Uses

func DeleteKey(key string)

DeleteKey deletes a key from cmdr options store

func DumpAsString Uses

func DumpAsString() (str string)

DumpAsString for debugging.

func EnsureDir Uses

func EnsureDir(dir string) (err error)

EnsureDir checks and creates the directory.

func Exec Uses

func Exec(rootCmd *RootCommand, opts ...ExecOption) (err error)

Exec is main entry of `cmdr`.

func FileExists Uses

func FileExists(name string) bool

FileExists returns the existence of an directory or file

func Get Uses

func Get(key string) interface{}

Get returns the generic value of an `Option` key with [WrapWithRxxtPrefix]. Such as: “`golang cmdr.Get("app.logger.level") => 'DEBUG',... “`

func GetBool Uses

func GetBool(key string, defaultVal ...bool) bool

GetBool returns the bool value of an `Option` key. Such as: “`golang cmdr.GetBool("app.logger.enable", false) => true,... “`

func GetBoolP Uses

func GetBoolP(prefix, key string, defaultVal ...bool) bool

GetBoolP returns the bool value of an `Option` key. Such as: “`golang cmdr.GetBoolP("app.logger", "enable", false) => true,... “`

func GetBoolR Uses

func GetBoolR(key string, defaultVal ...bool) bool

GetBoolR returns the bool value of an `Option` key with [WrapWithRxxtPrefix]. Such as: “`golang cmdr.GetBoolR("logger.enable", false) => true,... “`

func GetBoolRP Uses

func GetBoolRP(prefix, key string, defaultVal ...bool) bool

GetBoolRP returns the bool value of an `Option` key with [WrapWithRxxtPrefix]. Such as: “`golang cmdr.GetBoolRP("logger", "enable", false) => true,... “`

func GetComplex128 Uses

func GetComplex128(key string, defaultVal ...complex128) complex128

GetComplex128 returns the complex128 value of an `Option` key.

func GetComplex128P Uses

func GetComplex128P(prefix, key string, defaultVal ...complex128) complex128

GetComplex128P returns the complex128 value of an `Option` key.

func GetComplex128R Uses

func GetComplex128R(key string, defaultVal ...complex128) complex128

GetComplex128R returns the complex128 value of an `Option` key with [WrapWithRxxtPrefix].

func GetComplex128RP Uses

func GetComplex128RP(prefix, key string, defaultVal ...complex128) complex128

GetComplex128RP returns the complex128 value of an `Option` key with [WrapWithRxxtPrefix].

func GetComplex64 Uses

func GetComplex64(key string, defaultVal ...complex64) complex64

GetComplex64 returns the complex64 value of an `Option` key.

func GetComplex64P Uses

func GetComplex64P(prefix, key string, defaultVal ...complex64) complex64

GetComplex64P returns the complex64 value of an `Option` key.

func GetComplex64R Uses

func GetComplex64R(key string, defaultVal ...complex64) complex64

GetComplex64R returns the complex64 value of an `Option` key with [WrapWithRxxtPrefix].

func GetComplex64RP Uses

func GetComplex64RP(prefix, key string, defaultVal ...complex64) complex64

GetComplex64RP returns the complex64 value of an `Option` key with [WrapWithRxxtPrefix].

func GetCurrentDir Uses

func GetCurrentDir() string

GetCurrentDir returns the current workingFlag directory it should be equal with os.Getenv("PWD")

func GetDebugMode Uses

func GetDebugMode() bool

GetDebugMode returns the flag value of `--debug`/`-D`

func GetDuration Uses

func GetDuration(key string, defaultVal ...time.Duration) time.Duration

GetDuration returns the int slice value of an `Option` key.

func GetDurationP Uses

func GetDurationP(prefix, key string, defaultVal ...time.Duration) time.Duration

GetDurationP returns the int slice value of an `Option` key.

func GetDurationR Uses

func GetDurationR(key string, defaultVal ...time.Duration) time.Duration

GetDurationR returns the int slice value of an `Option` key.

func GetDurationRP Uses

func GetDurationRP(prefix, key string, defaultVal ...time.Duration) time.Duration

GetDurationRP returns the int slice value of an `Option` key.

func GetExcutablePath Uses

func GetExcutablePath() string

GetExcutablePath returns the executable file path

func GetExecutableDir Uses

func GetExecutableDir() string

GetExecutableDir returns the executable file directory

func GetFloat32 Uses

func GetFloat32(key string, defaultVal ...float32) float32

GetFloat32 returns the float32 value of an `Option` key.

func GetFloat32P Uses

func GetFloat32P(prefix, key string, defaultVal ...float32) float32

GetFloat32P returns the float32 value of an `Option` key.

func GetFloat32R Uses

func GetFloat32R(key string, defaultVal ...float32) float32

GetFloat32R returns the float32 value of an `Option` key with [WrapWithRxxtPrefix].

func GetFloat32RP Uses

func GetFloat32RP(prefix, key string, defaultVal ...float32) float32

GetFloat32RP returns the float32 value of an `Option` key with [WrapWithRxxtPrefix].

func GetFloat64 Uses

func GetFloat64(key string, defaultVal ...float64) float64

GetFloat64 returns the float64 value of an `Option` key.

func GetFloat64P Uses

func GetFloat64P(prefix, key string, defaultVal ...float64) float64

GetFloat64P returns the float64 value of an `Option` key.

func GetFloat64R Uses

func GetFloat64R(key string, defaultVal ...float64) float64

GetFloat64R returns the float64 value of an `Option` key with [WrapWithRxxtPrefix].

func GetFloat64RP Uses

func GetFloat64RP(prefix, key string, defaultVal ...float64) float64

GetFloat64RP returns the float64 value of an `Option` key with [WrapWithRxxtPrefix].

func GetHierarchyList Uses

func GetHierarchyList() map[string]interface{}

GetHierarchyList returns the hierarchy data

func GetInt Uses

func GetInt(key string, defaultVal ...int) int

GetInt returns the int value of an `Option` key.

func GetInt64 Uses

func GetInt64(key string, defaultVal ...int64) int64

GetInt64 returns the int64 value of an `Option` key.

func GetInt64P Uses

func GetInt64P(prefix, key string, defaultVal ...int64) int64

GetInt64P returns the int64 value of an `Option` key.

func GetInt64R Uses

func GetInt64R(key string, defaultVal ...int64) int64

GetInt64R returns the int64 value of an `Option` key with [WrapWithRxxtPrefix].

func GetInt64RP Uses

func GetInt64RP(prefix, key string, defaultVal ...int64) int64

GetInt64RP returns the int64 value of an `Option` key with [WrapWithRxxtPrefix].

func GetInt64Slice Uses

func GetInt64Slice(key string, defaultVal ...int64) []int64

GetInt64Slice returns the int slice value of an `Option` key.

func GetInt64SliceP Uses

func GetInt64SliceP(prefix, key string, defaultVal ...int64) []int64

GetInt64SliceP returns the int slice value of an `Option` key.

func GetInt64SliceR Uses

func GetInt64SliceR(key string, defaultVal ...int64) []int64

GetInt64SliceR returns the int slice value of an `Option` key with [WrapWithRxxtPrefix].

func GetInt64SliceRP Uses

func GetInt64SliceRP(prefix, key string, defaultVal ...int64) []int64

GetInt64SliceRP returns the int slice value of an `Option` key with [WrapWithRxxtPrefix].

func GetIntP Uses

func GetIntP(prefix, key string, defaultVal ...int) int

GetIntP returns the int value of an `Option` key.

func GetIntR Uses

func GetIntR(key string, defaultVal ...int) int

GetIntR returns the int value of an `Option` key with [WrapWithRxxtPrefix].

func GetIntRP Uses

func GetIntRP(prefix, key string, defaultVal ...int) int

GetIntRP returns the int value of an `Option` key with [WrapWithRxxtPrefix].

func GetIntSlice Uses

func GetIntSlice(key string, defaultVal ...int) []int

GetIntSlice returns the int slice value of an `Option` key.

func GetIntSliceP Uses

func GetIntSliceP(prefix, key string, defaultVal ...int) []int

GetIntSliceP returns the int slice value of an `Option` key.

func GetIntSliceR Uses

func GetIntSliceR(key string, defaultVal ...int) []int

GetIntSliceR returns the int slice value of an `Option` key with [WrapWithRxxtPrefix].

func GetIntSliceRP Uses

func GetIntSliceRP(prefix, key string, defaultVal ...int) []int

GetIntSliceRP returns the int slice value of an `Option` key with [WrapWithRxxtPrefix].

func GetKibibytes Uses

func GetKibibytes(key string, defaultVal ...uint64) uint64

GetKibibytes returns the uint64 value of an `Option` key.

kibibyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kibibyte is based 1024. That means: 1 KiB = 1k = 1024 bytes

See also: https://en.wikipedia.org/wiki/Kibibyte Its related word is kilobyte, refer to: https://en.wikipedia.org/wiki/Kilobyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func GetKibibytesP Uses

func GetKibibytesP(prefix, key string, defaultVal ...uint64) uint64

GetKibibytesP returns the uint64 value of an `Option` key.

kibibyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kibibyte is based 1024. That means: 1 KiB = 1k = 1024 bytes

See also: https://en.wikipedia.org/wiki/Kibibyte Its related word is kilobyte, refer to: https://en.wikipedia.org/wiki/Kilobyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func GetKibibytesR Uses

func GetKibibytesR(key string, defaultVal ...uint64) uint64

GetKibibytesR returns the uint64 value of an `Option` key with [WrapWithRxxtPrefix].

kibibyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kibibyte is based 1024. That means: 1 KiB = 1k = 1024 bytes

See also: https://en.wikipedia.org/wiki/Kibibyte Its related word is kilobyte, refer to: https://en.wikipedia.org/wiki/Kilobyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func GetKibibytesRP Uses

func GetKibibytesRP(prefix, key string, defaultVal ...uint64) uint64

GetKibibytesRP returns the uint64 value of an `Option` key with [WrapWithRxxtPrefix].

kibibyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kibibyte is based 1024. That means: 1 KiB = 1k = 1024 bytes

See also: https://en.wikipedia.org/wiki/Kibibyte Its related word is kilobyte, refer to: https://en.wikipedia.org/wiki/Kilobyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func GetKilobytes Uses

func GetKilobytes(key string, defaultVal ...uint64) uint64

GetKilobytes returns the uint64 value of an `Option` key.

kilobyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kilobyte is based 1000. That means: 1 KB = 1k = 1000 bytes

See also: https://en.wikipedia.org/wiki/Kilobyte Its related word is kibibyte, refer to: https://en.wikipedia.org/wiki/Kibibyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func GetKilobytesP Uses

func GetKilobytesP(prefix, key string, defaultVal ...uint64) uint64

GetKilobytesP returns the uint64 value of an `Option` key.

kilobyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kilobyte is based 1000. That means: 1 KB = 1k = 1000 bytes

See also: https://en.wikipedia.org/wiki/Kilobyte Its related word is kibibyte, refer to: https://en.wikipedia.org/wiki/Kibibyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func GetKilobytesR Uses

func GetKilobytesR(key string, defaultVal ...uint64) uint64

GetKilobytesR returns the uint64 value of an `Option` key with [WrapWithRxxtPrefix].

kilobyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kilobyte is based 1000. That means: 1 KB = 1k = 1000 bytes

See also: https://en.wikipedia.org/wiki/Kilobyte Its related word is kibibyte, refer to: https://en.wikipedia.org/wiki/Kibibyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func GetKilobytesRP Uses

func GetKilobytesRP(prefix, key string, defaultVal ...uint64) uint64

GetKilobytesRP returns the uint64 value of an `Option` key with [WrapWithRxxtPrefix].

kilobyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kilobyte is based 1000. That means: 1 KB = 1k = 1000 bytes

See also: https://en.wikipedia.org/wiki/Kilobyte Its related word is kibibyte, refer to: https://en.wikipedia.org/wiki/Kibibyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func GetMap Uses

func GetMap(key string) map[string]interface{}

GetMap an `Option` by key string, it returns a hierarchy map or nil

func GetMapR Uses

func GetMapR(key string) map[string]interface{}

GetMapR an `Option` by key string with [WrapWithRxxtPrefix], it returns a hierarchy map or nil

func GetNoColorMode Uses

func GetNoColorMode() bool

GetNoColorMode return the flag value of `--no-color`

func GetPredefinedLocations Uses

func GetPredefinedLocations() []string

GetPredefinedLocations return the searching locations for loading config files.

func GetQuietMode Uses

func GetQuietMode() bool

GetQuietMode returns the flag value of `--quiet`/`-q`

func GetR Uses

func GetR(key string) interface{}

GetR returns the generic value of an `Option` key with [WrapWithRxxtPrefix]. Such as: “`golang cmdr.GetR("logger.level") => 'DEBUG',... “`

func GetSectionFrom Uses

func GetSectionFrom(sectionKeyPath string, holder interface{}) (err error)

GetSectionFrom returns error while cannot yaml Marshal and Unmarshal `cmdr.GetSectionFrom(sectionKeyPath, &holder)` could load all sub-tree nodes from sectionKeyPath and transform them into holder structure, such as: “`go

type ServerConfig struct {
  Port int
  HttpMode int
  EnableTls bool
}
var serverConfig = new(ServerConfig)
cmdr.GetSectionFrom("server", &serverConfig)
assert serverConfig.Port == 7100

“`

func GetStrictMode Uses

func GetStrictMode() bool

GetStrictMode enables error when opt value missed. such as: xxx a b --prefix” => error: prefix opt has no value specified. xxx a b --prefix'/' => ok.

ENV: use `CMDR_APP_STRICT_MODE=true` to enable strict-mode. NOTE: `CMDR_APP_` prefix could be set by user (via: `EnvPrefix` && `RxxtPrefix`).

the flag value of `--strict-mode`.

func GetString Uses

func GetString(key string, defaultVal ...string) string

GetString returns the string value of an `Option` key.

func GetStringNoExpand Uses

func GetStringNoExpand(key string, defaultVal ...string) string

GetStringNoExpand returns the string value of an `Option` key.

func GetStringNoExpandP Uses

func GetStringNoExpandP(prefix, key string, defaultVal ...string) string

GetStringNoExpandP returns the string value of an `Option` key.

func GetStringNoExpandR Uses

func GetStringNoExpandR(key string, defaultVal ...string) string

GetStringNoExpandR returns the string value of an `Option` key with [WrapWithRxxtPrefix].

func GetStringNoExpandRP Uses

func GetStringNoExpandRP(prefix, key string, defaultVal ...string) string

GetStringNoExpandRP returns the string value of an `Option` key with [WrapWithRxxtPrefix].

func GetStringP Uses

func GetStringP(prefix, key string, defaultVal ...string) string

GetStringP returns the string value of an `Option` key.

func GetStringR Uses

func GetStringR(key string, defaultVal ...string) string

GetStringR returns the string value of an `Option` key with [WrapWithRxxtPrefix].

func GetStringRP Uses

func GetStringRP(prefix, key string, defaultVal ...string) string

GetStringRP returns the string value of an `Option` key with [WrapWithRxxtPrefix].

func GetStringSlice Uses

func GetStringSlice(key string, defaultVal ...string) []string

GetStringSlice returns the string slice value of an `Option` key.

func GetStringSliceP Uses

func GetStringSliceP(prefix, key string, defaultVal ...string) []string

GetStringSliceP returns the string slice value of an `Option` key.

func GetStringSliceR Uses

func GetStringSliceR(key string, defaultVal ...string) []string

GetStringSliceR returns the string slice value of an `Option` key with [WrapWithRxxtPrefix].

func GetStringSliceRP Uses

func GetStringSliceRP(prefix, key string, defaultVal ...string) []string

GetStringSliceRP returns the string slice value of an `Option` key with [WrapWithRxxtPrefix].

func GetUint Uses

func GetUint(key string, defaultVal ...uint) uint

GetUint returns the uint value of an `Option` key.

func GetUint64 Uses

func GetUint64(key string, defaultVal ...uint64) uint64

GetUint64 returns the uint64 value of an `Option` key.

func GetUint64P Uses

func GetUint64P(prefix, key string, defaultVal ...uint64) uint64

GetUint64P returns the uint64 value of an `Option` key.

func GetUint64R Uses

func GetUint64R(key string, defaultVal ...uint64) uint64

GetUint64R returns the uint64 value of an `Option` key with [WrapWithRxxtPrefix].

func GetUint64RP Uses

func GetUint64RP(prefix, key string, defaultVal ...uint64) uint64

GetUint64RP returns the uint64 value of an `Option` key with [WrapWithRxxtPrefix].

func GetUint64Slice Uses

func GetUint64Slice(key string, defaultVal ...uint64) []uint64

GetUint64Slice returns the int slice value of an `Option` key.

func GetUint64SliceP Uses

func GetUint64SliceP(prefix, key string, defaultVal ...uint64) []uint64

GetUint64SliceP returns the int slice value of an `Option` key.

func GetUint64SliceR Uses

func GetUint64SliceR(key string, defaultVal ...uint64) []uint64

GetUint64SliceR returns the int slice value of an `Option` key with [WrapWithRxxtPrefix].

func GetUint64SliceRP Uses

func GetUint64SliceRP(prefix, key string, defaultVal ...uint64) []uint64

GetUint64SliceRP returns the int slice value of an `Option` key with [WrapWithRxxtPrefix].

func GetUintP Uses

func GetUintP(prefix, key string, defaultVal ...uint) uint

GetUintP returns the uint value of an `Option` key.

func GetUintR Uses

func GetUintR(key string, defaultVal ...uint) uint

GetUintR returns the uint value of an `Option` key with [WrapWithRxxtPrefix].

func GetUintRP Uses

func GetUintRP(prefix, key string, defaultVal ...uint) uint

GetUintRP returns the uint value of an `Option` key with [WrapWithRxxtPrefix].

func GetUsedConfigFile Uses

func GetUsedConfigFile() string

GetUsedConfigFile returns the main config filename (generally it's `<appname>.yml`)

func GetUsedConfigSubDir Uses

func GetUsedConfigSubDir() string

GetUsedConfigSubDir returns the sub-directory `conf.d` of config files. Note that it be always normalized now. Sometimes it might be empty string ("") if `conf.d` have not been found.

func GetUsingConfigFiles Uses

func GetUsingConfigFiles() []string

GetUsingConfigFiles returns all loaded config files, includes the main config file and children in sub-directory `conf.d`.

func GetVerboseMode Uses

func GetVerboseMode() bool

GetVerboseMode returns the flag value of `--verbose`/`-v`

func HasKey Uses

func HasKey(key string) (ok bool)

HasKey detects whether a key exists in cmdr options store or not

func InDebugging Uses

func InDebugging() bool

InDebugging return the status if in debug mode noinspection GoBoolExpressions

func InTesting Uses

func InTesting() bool

InTesting detects whether is running under go test mode

func IsDebuggerAttached Uses

func IsDebuggerAttached() bool

IsDebuggerAttached return the status if in debug mode noinspection GoBoolExpressions

func IsDigitHeavy Uses

func IsDigitHeavy(s string) bool

IsDigitHeavy tests if the whole string is digit

func IsDirectory Uses

func IsDirectory(path string) (bool, error)

IsDirectory tests whether `path` is a directory or not

func IsRegularFile Uses

func IsRegularFile(path string) (bool, error)

IsRegularFile tests whether `path` is a normal regular file or not

func IsZero Uses

func IsZero(v reflect.Value) bool

IsZero reports whether v is the zero value for its type. It panics if the argument is invalid.

func Launch Uses

func Launch(cmd string, args ...string) (err error)

Launch executes a command setting both standard input, output and error.

func LaunchEditor Uses

func LaunchEditor(editor string) (content []byte, err error)

LaunchEditor launches the specified editor

func LaunchEditorWith Uses

func LaunchEditorWith(editor string, filename string) (content []byte, err error)

LaunchEditorWith launches the specified editor with a filename

func LoadConfigFile Uses

func LoadConfigFile(file string) (err error)

LoadConfigFile loads a yaml config file and merge the settings into `rxxtOptions` and load files in the `conf.d` child directory too.

func MergeWith Uses

func MergeWith(m map[string]interface{}) (err error)

MergeWith will merge a map recursive. You could merge a yaml/json/toml options into cmdr Hierarchy Options.

func NormalizeDir Uses

func NormalizeDir(s string) string

NormalizeDir make dir name normalized

func ParseComplex Uses

func ParseComplex(s string) (v complex128)

ParseComplex converts a string to complex number.

Examples:

c1 := cmdr.ParseComplex("3-4i")
c2 := cmdr.ParseComplex("3.13+4.79i")

func ParseComplexX Uses

func ParseComplexX(s string) (v complex128, err error)

ParseComplexX converts a string to complex number. If the string is not valid complex format, return err not nil.

Examples:

c1 := cmdr.ParseComplex("3-4i")
c2 := cmdr.ParseComplex("3.13+4.79i")

func PressAnyKeyToContinue Uses

func PressAnyKeyToContinue(in io.Reader, msg ...string) (input string)

PressAnyKeyToContinue lets program pause and wait for user's ANY key press in console/terminal

func PressEnterToContinue Uses

func PressEnterToContinue(in io.Reader, msg ...string) (input string)

PressEnterToContinue lets program pause and wait for user's ENTER key press in console/terminal

func RemoveDirRecursive Uses

func RemoveDirRecursive(dir string) (err error)

RemoveDirRecursive removes a directory and any children it contains.

func RemoveOnConfigLoadedListener Uses

func RemoveOnConfigLoadedListener(c ConfigReloaded)

RemoveOnConfigLoadedListener remove an functor on config loaded and merged

func ResetOptions Uses

func ResetOptions()

ResetOptions to reset the exists `Options`, so that you could follow a `LoadConfigFile()` with it.

func SaveAsJSON Uses

func SaveAsJSON(filename string) (err error)

SaveAsJSON to Save all config entries as a json file

func SaveAsToml Uses

func SaveAsToml(filename string) (err error)

SaveAsToml to Save all config entries as a toml file

func SaveAsYaml Uses

func SaveAsYaml(filename string) (err error)

SaveAsYaml to Save all config entries as a yaml file

func SaveObjAsToml Uses

func SaveObjAsToml(obj interface{}, filename string) (err error)

SaveObjAsToml to Save an object as a toml file

func Set Uses

func Set(key string, val interface{})

Set set the value of an `Option` key (with prefix auto-wrap). The key MUST not have an `app` prefix. eg:

cmdr.Set("logger.level", "DEBUG")
cmdr.Set("ms.tags.port", 8500)
...
cmdr.Set("debug", true)
cmdr.GetBool("app.debug") => true

func SetNx Uses

func SetNx(key string, val interface{})

SetNx but without prefix auto-wrapped. `rxxtPrefix` is a string slice to define the prefix string array, default is ["app"]. So, cmdr.Set("debug", true) will put an real entry with (`app.debug`, true).

func SetOnConfigLoadedListener Uses

func SetOnConfigLoadedListener(c ConfigReloaded, enabled bool)

SetOnConfigLoadedListener enable/disable an functor on config loaded and merged

func SignalQuitSignal Uses

func SignalQuitSignal()

SignalQuitSignal post a SIGQUIT signal to the current process

func SignalTermSignal Uses

func SignalTermSignal()

SignalTermSignal post a SIGTERM signal to the current process

func SignalToSelf Uses

func SignalToSelf(sig os.Signal) (err error)

SignalToSelf trigger the sig signal to the current process

func Soundex Uses

func Soundex(s string) (snd4 string)

Soundex returns the english word's soundex value, such as: 'tags' => 't322'

func StripOrderPrefix Uses

func StripOrderPrefix(s string) string

StripOrderPrefix strips the prefix string fragment for sorting order. see also: Command.Group, Flag.Group, ...

func StripPrefix Uses

func StripPrefix(s, p string) string

StripPrefix strips the prefix 'p' from a string 's'

func StripQuotes Uses

func StripQuotes(s string) string

StripQuotes strips single or double quotes around a string.

func ToBool Uses

func ToBool(val interface{}, defaultVal ...bool) (ret bool)

ToBool translate a value to boolean

func TrapSignals Uses

func TrapSignals(onTrapped func(s os.Signal), signals ...os.Signal) (waiter func())

TrapSignals is a helper for simplify your infinite loop codes.

Usage

 func enteringLoop() {
	  waiter := cmdr.TrapSignals(func(s os.Signal) {
	    logrus.Debugf("receive signal '%v' in onTrapped()", s)
	  })
	  go waiter()
 }

func TrapSignalsEnh Uses

func TrapSignalsEnh(done chan bool, onTrapped func(s os.Signal), signals ...os.Signal) (waiter func())

TrapSignalsEnh is a helper for simplify your infinite loop codes.

Usage

 func enteringLoop() {
   done := make(chan bool, 1)
   go func(done chan bool){
      // your main serve loop
      done <- true   // to end the TrapSignalsEnh waiter by manually, instead of os signals caught.
   }(done)
	  waiter := cmdr.TrapSignalsEnh(done, func(s os.Signal) {
	    logrus.Debugf("receive signal '%v' in onTrapped()", s)
	  })
	  go waiter()
 }

func WalkAllCommands Uses

func WalkAllCommands(walk func(cmd *Command, index int) (err error)) (err error)

WalkAllCommands loops for all commands, starting from root.

func WrapWithRxxtPrefix Uses

func WrapWithRxxtPrefix(key string) string

WrapWithRxxtPrefix wrap an key with [RxxtPrefix], for [GetXxx(key)] and [GetXxxP(prefix,key)]

type BaseOpt Uses

type BaseOpt struct {
    Name string
    // Short rune. short option/command name.
    // single char. example for flag: "a" -> "-a"
    Short string
    // Full full/long option/command name.
    // word string. example for flag: "addr" -> "--addr"
    Full string
    // Aliases are the more synonyms
    Aliases []string
    // Group group name
    Group string

    Description     string
    LongDescription string
    Examples        string
    Hidden          bool

    // Deprecated is a version string just like '0.5.9' or 'v0.5.9', that means this command/flag was/will be deprecated since `v0.5.9`.
    Deprecated string

    // Action is callback for the last recognized command/sub-command.
    // return: ErrShouldBeStopException will break the following flow and exit right now
    // cmd 是 flag 被识别时已经得到的子命令
    Action Handler
    // contains filtered or unexported fields
}

BaseOpt is base of `Command`, `Flag`

func (*BaseOpt) GetLongTitleNamesArray Uses

func (s *BaseOpt) GetLongTitleNamesArray() []string

GetLongTitleNamesArray returns long name and aliases as an array

func (*BaseOpt) GetShortTitleNamesArray Uses

func (s *BaseOpt) GetShortTitleNamesArray() []string

GetShortTitleNamesArray returns short name as an array

func (*BaseOpt) GetTitleName Uses

func (s *BaseOpt) GetTitleName() string

GetTitleName returns name/full/short string

func (*BaseOpt) GetTitleNames Uses

func (s *BaseOpt) GetTitleNames() string

GetTitleNames return the joint string of short,full,aliases names

func (*BaseOpt) GetTitleNamesArray Uses

func (s *BaseOpt) GetTitleNamesArray() []string

GetTitleNamesArray returns short,full,aliases names

func (*BaseOpt) GetTitleNamesBy Uses

func (s *BaseOpt) GetTitleNamesBy(delimChar string) string

GetTitleNamesBy returns the joint string of short,full,aliases names

func (*BaseOpt) HasParent Uses

func (s *BaseOpt) HasParent() bool

HasParent detects whether owner is available or not

type Command Uses

type Command struct {
    BaseOpt

    Flags []*Flag

    SubCommands []*Command
    // return: ErrShouldBeStopException will break the following flow and exit right now
    PreAction Handler
    // PostAction will be run after Action() invoked.
    PostAction Invoker
    // be shown at tail of command usages line. Such as for TailPlaceHolder="<host-fqdn> <ipv4/6>":
    // austr dns add <host-fqdn> <ipv4/6> [Options] [Parent/Global Options]
    TailPlaceHolder string
    // contains filtered or unexported fields
}

Command holds the structure of commands and sub-commands

func FindSubCommand Uses

func FindSubCommand(longName string, cmd *Command) (res *Command)

FindSubCommand find sub-command with `longName` from `cmd` if cmd == nil: finding from root command

func FindSubCommandRecursive Uses

func FindSubCommandRecursive(longName string, cmd *Command) (res *Command)

FindSubCommandRecursive find sub-command with `longName` from `cmd` recursively if cmd == nil: finding from root command

func Match Uses

func Match(inputCommandlineWithoutArg0 string, opts ...ExecOption) (last *Command, err error)

Match try parsing the input command-line, the result is the last hit *Command.

func (*Command) FindFlag Uses

func (c *Command) FindFlag(longName string) (res *Flag)

FindFlag find flag with `longName` from `cmd`

func (*Command) FindFlagRecursive Uses

func (c *Command) FindFlagRecursive(longName string) (res *Flag)

FindFlagRecursive find flag with `longName` from `cmd` recursively

func (*Command) FindSubCommand Uses

func (c *Command) FindSubCommand(longName string) (res *Command)

FindSubCommand find sub-command with `longName` from `cmd`

func (*Command) FindSubCommandRecursive Uses

func (c *Command) FindSubCommandRecursive(longName string) (res *Command)

FindSubCommandRecursive find sub-command with `longName` from `cmd` recursively

func (*Command) GetDottedNamePath Uses

func (c *Command) GetDottedNamePath() string

GetDottedNamePath return the dotted key path of this command in the options store. For example, the returned string just like: 'server.start'. NOTE that there is no OptiontPrefixes in this key path. For more information about Option Prefix, refer to [WithOptionsPrefix]

func (*Command) GetExpandableNames Uses

func (c *Command) GetExpandableNames() string

GetExpandableNames returns the names comma splitted string.

func (*Command) GetExpandableNamesArray Uses

func (c *Command) GetExpandableNamesArray() []string

GetExpandableNamesArray returns the names array of command, includes short name and long name.

func (*Command) GetHitStr Uses

func (c *Command) GetHitStr() string

GetHitStr returns the matched command string

func (*Command) GetName Uses

func (c *Command) GetName() string

GetName returns the name of a `Command`.

func (*Command) GetOwner Uses

func (c *Command) GetOwner() *Command

GetOwner returns the parent command object

func (*Command) GetParentName Uses

func (c *Command) GetParentName() string

GetParentName returns the owner command name

func (*Command) GetQuotedGroupName Uses

func (c *Command) GetQuotedGroupName() string

GetQuotedGroupName returns the group name quoted string.

func (*Command) GetRoot Uses

func (c *Command) GetRoot() *RootCommand

GetRoot returns the `RootCommand`

func (*Command) GetSubCommandNamesBy Uses

func (c *Command) GetSubCommandNamesBy(delimChar string) string

GetSubCommandNamesBy returns the joint string of subcommands

func (*Command) IsRoot Uses

func (c *Command) IsRoot() bool

IsRoot returns true if this command is a RootCommand

func (*Command) PrintBuildInfo Uses

func (c *Command) PrintBuildInfo()

PrintBuildInfo print building information

func (*Command) PrintHelp Uses

func (c *Command) PrintHelp(justFlags bool)

PrintHelp prints help screen

func (*Command) PrintVersion Uses

func (c *Command) PrintVersion()

PrintVersion prints versions information

type ConfigReloaded Uses

type ConfigReloaded interface {
    OnConfigReloaded()
}

ConfigReloaded for config reloaded

type Copier Uses

type Copier interface {
    SetIgnoreNames(ignoreNames ...string) Copier
    SetEachFieldAlways(b bool) Copier
    Copy(toValue interface{}, fromValue interface{}, ignoreNames ...string) (err error)
}

Copier interface Copier is based on from github.com/jinzhu/copier

type DistanceOption Uses

type DistanceOption func(StringDistance)

DistanceOption is a functional options prototype

func JWWithThreshold Uses

func JWWithThreshold(threshold float64) DistanceOption

JWWithThreshold sets the threshold for Jaro-Winkler algorithm.

type ErrorForCmdr Uses

type ErrorForCmdr struct {
    // Inner     error
    // Msg       string
    Ignorable bool
    // contains filtered or unexported fields
}

ErrorForCmdr structure

func (*ErrorForCmdr) As Uses

func (w *ErrorForCmdr) As(target interface{}) bool

As finds the first error in err's chain that matches target, and if so, sets target to that error value and returns true.

func (*ErrorForCmdr) Attach Uses

func (w *ErrorForCmdr) Attach(errs ...error)

Attach appends errs. For ErrorForCmdr, only one last error will be kept.

func (*ErrorForCmdr) Cause Uses

func (w *ErrorForCmdr) Cause() error

Cause returns the underlying cause of the error recursively, if possible.

func (*ErrorForCmdr) Error Uses

func (w *ErrorForCmdr) Error() string

func (*ErrorForCmdr) FormatNew Uses

func (w *ErrorForCmdr) FormatNew(ignorable bool, livedArgs ...interface{}) *errors.WithStackInfo

FormatNew creates a new error object based on this error template 'w'.

Example:

errTmpl1001 := BUG1001.NewTemplate("something is wrong %v")
err4 := errTmpl1001.FormatNew("ok").Attach(errBug1)
fmt.Println(err4)
fmt.Printf("%+v\n", err4)

func (*ErrorForCmdr) Is Uses

func (w *ErrorForCmdr) Is(target error) bool

Is reports whether any error in err's chain matches target.

func (*ErrorForCmdr) Unwrap Uses

func (w *ErrorForCmdr) Unwrap() error

Unwrap returns the result of calling the Unwrap method on err, if err's type contains an Unwrap method returning error. Otherwise, Unwrap returns nil.

type ExecOption Uses

type ExecOption func(w *ExecWorker)

ExecOption is the functional option for Exec()

func WithAfterArgsParsed Uses

func WithAfterArgsParsed(hookFunc Handler) ExecOption

WithAfterArgsParsed sets a callback point after command-line args parsed by cmdr internal exec().

Your callback func will be invoked before invoking the matched command `cmd`. At this time, all command-line args parsed and a command found.

If program was launched with empty or wrong arguments, your callback func won't be triggered.

When empty argument or `--help` found, cmdr will display help screen. To customize it see also cmdr.WithCustomShowVersion and cmdr.WithCustomShowBuildInfo.

When any wrong/warn arguments found, cmdr will display some tip messages. To customize it see also cmdr.WithUnknownOptionHandler.

func WithAutomaticEnvHooks Uses

func WithAutomaticEnvHooks(hook HookOptsFunc) ExecOption

WithAutomaticEnvHooks sets the hook after building automatic environment.

At this point, you could override the option default values.

func WithBuiltinCommands Uses

func WithBuiltinCommands(versionsCmds, helpCmds, verboseCmds, generateCmds, generalCmdrCmds bool) ExecOption

WithBuiltinCommands enables/disables those builtin predefined commands. Such as:

- versionsCmds / EnableVersionCommands supports injecting the default `--version` flags and commands
- helpCmds / EnableHelpCommands supports injecting the default `--help` flags and commands
- verboseCmds / EnableVerboseCommands supports injecting the default `--verbose` flags and commands
- generalCmdrCmds / EnableCmdrCommands support these flags: `--strict-mode`, `--no-env-overrides`, and `--no-color`
- generateCmds / EnableGenerateCommands supports injecting the default `generate` commands and sub-commands

func WithConfigLoadedListener Uses

func WithConfigLoadedListener(c ConfigReloaded) ExecOption

WithConfigLoadedListener adds a functor on config loaded and merged

func WithCustomShowBuildInfo Uses

func WithCustomShowBuildInfo(fn func()) ExecOption

WithCustomShowBuildInfo supports your `ShowBuildInfo()` instead of internal `showBuildInfo()`

func WithCustomShowVersion Uses

func WithCustomShowVersion(fn func()) ExecOption

WithCustomShowVersion supports your `ShowVersion()` instead of internal `showVersion()`

func WithEnvPrefix Uses

func WithEnvPrefix(prefix ...string) ExecOption

WithEnvPrefix sets the environment variable text prefixes. cmdr will lookup envvars for a key. Default env-prefix is array ["CMDR"], ie 'CMDR_'

func WithEnvVarMap Uses

func WithEnvVarMap(varToValue map[string]func() string) ExecOption

WithEnvVarMap adds a (envvar-name, value) map, which will be applied to string option value, string-slice option values, .... For example, you could define a key-value entry in your `<app>.yml` file:

app:
  test-value: "$THIS/$APPNAME.yml"
  home-dir: "$HOME"

it will be expanded by mapping to OS environment and this map (WithEnvVarMap). That is, $THIS will be expanded to the directory path of this executable, $APPNAME to the app name. And of course, $HOME will be mapped to os home directory path.

func WithHelpPainter Uses

func WithHelpPainter(painter Painter) ExecOption

WithHelpPainter allows to change the behavior and facade of help screen.

func WithHelpTabStop Uses

func WithHelpTabStop(tabStop int) ExecOption

WithHelpTabStop sets the tab-stop position in the help screen Default tabstop is 48

func WithHelpTailLine Uses

func WithHelpTailLine(line string) ExecOption

WithHelpTailLine setup the tail line in help screen

Default line is:

"\nType '-h' or '--help' to get command help screen."

func WithIgnoreWrongEnumValue Uses

func WithIgnoreWrongEnumValue(ignored bool) ExecOption

WithIgnoreWrongEnumValue will be put into `cmdrError.Ignorable` while wrong enumerable value found in parsing command-line options. The default is true.

Main program might decide whether it's a warning or error.

See also

[Flag.ValidArgs]

func WithInternalOutputStreams Uses

func WithInternalOutputStreams(out, err *bufio.Writer) ExecOption

WithInternalOutputStreams sets the internal output streams for debugging

func WithLogex Uses

func WithLogex(lvl Level, opts ...logex.LogexOption) ExecOption

WithLogex enables logex integration

func WithLogexPrefix Uses

func WithLogexPrefix(prefix string) ExecOption

WithLogexPrefix specify a prefix string PS.

In cmdr options store, we will load the logging options under this key path:

app:
  logger:
    level:  DEBUG            # panic, fatal, error, warn, info, debug, trace, off
    format: text             # text, json, logfmt
    target: default          # default, todo: journal

As showing above, the default prefix is "logger". You can replace it with yours, via WithLogexPrefix(). For example, when you compose WithLogexPrefix("logging"), the following entries would be applied:

app:
  logging:
    level:  DEBUG
    format:
    target:

func WithLogexSkipFrames Uses

func WithLogexSkipFrames(skipFrames int) ExecOption

WithLogexSkipFrames specify the skip frames to lookup the caller

func WithNoColor Uses

func WithNoColor(b bool) ExecOption

WithNoColor make console outputs plain and without ANSI escape colors

Since v1.6.2+

func WithNoCommandAction Uses

func WithNoCommandAction(b bool) ExecOption

WithNoCommandAction do NOT run the action of the matched command.

func WithNoDefaultHelpScreen Uses

func WithNoDefaultHelpScreen(b bool) ExecOption

WithNoDefaultHelpScreen true to disable printing help screen if without any arguments

func WithNoEnvOverrides Uses

func WithNoEnvOverrides(b bool) ExecOption

WithNoEnvOverrides enables the internal no-env-overrides mode

Since v1.6.2+

In this mode, cmdr do NOT find and transfer equivalent envvar value into cmdr options store.

func WithNoLoadConfigFiles Uses

func WithNoLoadConfigFiles(b bool) ExecOption

WithNoLoadConfigFiles true means no loading config files

func WithNoWatchConfigFiles Uses

func WithNoWatchConfigFiles(b bool) ExecOption

WithNoWatchConfigFiles true means no watching the config files

func WithOnPassThruCharHit Uses

func WithOnPassThruCharHit(fn func(parsed *Command, switchChar string, args []string) (err error)) ExecOption

WithOnPassThruCharHit handle the passthrough char(s) (i.e. '--') matched For example, type `bin/fluent mx -d -- --help` will trigger this callback at the 2nd flag '--'.

func WithOnSwitchCharHit Uses

func WithOnSwitchCharHit(fn func(parsed *Command, switchChar string, args []string) (err error)) ExecOption

WithOnSwitchCharHit handle the exact single switch-char (such as '-', '/', '~') matched. For example, type `bin/fluent mx -d - --help` will trigger this callback at the 2nd flag '-'.

func WithOptionMergeModifying Uses

func WithOptionMergeModifying(onMergingSet func(keyPath string, value, oldVal interface{})) ExecOption

WithOptionMergeModifying adds a callback which invoked on new configurations was merging into, typically on loading the modified external config file(s). NOTE that MergeWith(...) can make it triggered too. A onMergingSet callback will be enabled after first loaded any external configuration files and environment variables merged.

func WithOptionModifying Uses

func WithOptionModifying(onOptionSet func(keyPath string, value, oldVal interface{})) ExecOption

WithOptionModifying adds a callback which invoked at each time any option was modified. It will be enabled after any external config files first loaded and the env variables had been merged.

func WithOptionsPrefix Uses

func WithOptionsPrefix(prefix ...string) ExecOption

WithOptionsPrefix create a top-level namespace, which contains all normalized `Flag`s. =WithRxxtPrefix Default Options Prefix is array ["app"], ie 'app.xxx'

func WithPagerEnabled Uses

func WithPagerEnabled() ExecOption

WithPagerEnabled transfer cmdr stdout to OS pager. The environment variable `PAGER` will be checkout, otherwise `less`.

NOTICE ONLY the outputs of cmdr (such as help screen) will be paged.

func WithPredefinedLocations Uses

func WithPredefinedLocations(locations ...string) ExecOption

WithPredefinedLocations sets the environment variable text prefixes. cmdr will lookup envvars for a key. Default locations are:

[]string{
  "./ci/etc/%s/%s.yml",       // for developer
  "/etc/%s/%s.yml",           // regular location
  "/usr/local/etc/%s/%s.yml", // regular macOS HomeBrew location
  "$HOME/.config/%s/%s.yml",  // per user
  "$HOME/.%s/%s.yml",         // ext location per user
  "$THIS/%s.yml",             // executable's directory
  "%s.yml",                   // current directory
},

See also InternalResetWorker

func WithRxxtPrefix Uses

func WithRxxtPrefix(prefix ...string) ExecOption

WithRxxtPrefix create a top-level namespace, which contains all normalized `Flag`s. cmdr will lookup envvars for a key. Default Options Prefix is array ["app"], ie 'app.xxx'

func WithSimilarThreshold Uses

func WithSimilarThreshold(similiarThreshold float64) ExecOption

WithSimilarThreshold defines a threshold for command/option similar detector. Default threshold is 0.6666666666666666. See also JaroWinklerDistance

func WithStrictMode Uses

func WithStrictMode(b bool) ExecOption

WithStrictMode enables the internal strict mode

Since v1.6.2+

In this mode, any warnings will be treat as an error and cause app fatal exit.

In normal mode, these cases are assumed as warnings: - flag name not found - command or sub-command name not found - value extracting failed - ...

func WithUnhandledErrorHandler Uses

func WithUnhandledErrorHandler(handler UnhandledErrorHandler) ExecOption

WithUnhandledErrorHandler handle the panics or exceptions generally

func WithUnknownOptionHandler Uses

func WithUnknownOptionHandler(handler UnknownOptionHandler) ExecOption

WithUnknownOptionHandler enables your customized wrong command/flag processor. internal processor supports smart suggestions for those wrong commands and flags.

func WithWatchMainConfigFileToo Uses

func WithWatchMainConfigFileToo(b bool) ExecOption

WithWatchMainConfigFileToo enables the watcher on main config file. By default, cmdr watches all files in the sub-directory `conf.d` of which folder contains the main config file. But as a feature, cmdr ignore the changes in main config file.

WithWatchMainConfigFileToo can switch this feature.

envvars:

CFG_DIR: will be set to the folder contains the main config file
no-watch-conf-dir: if set true, the watcher will be disabled.

func WithXrefBuildingHooks Uses

func WithXrefBuildingHooks(beforeXrefBuildingX, afterXrefBuiltX HookFunc) ExecOption

WithXrefBuildingHooks sets the hook before and after building xref indices. It's replacers for AddOnBeforeXrefBuilding, and AddOnAfterXrefBuilt.

By using beforeXrefBuildingX, you could append, modify, or remove the builtin commands and options.

type ExecWorker Uses

type ExecWorker struct {
    // contains filtered or unexported fields
}

ExecWorker is a core logic worker and holder

func (*ExecWorker) AddOnAfterXrefBuilt Uses

func (w *ExecWorker) AddOnAfterXrefBuilt(cb HookFunc)

AddOnAfterXrefBuilt add hook func daemon plugin needed

func (*ExecWorker) AddOnBeforeXrefBuilding Uses

func (w *ExecWorker) AddOnBeforeXrefBuilding(cb HookFunc)

AddOnBeforeXrefBuilding add hook func daemon plugin needed

func (*ExecWorker) InternalExecFor Uses

func (w *ExecWorker) InternalExecFor(rootCmd *RootCommand, args []string) (last *Command, err error)

InternalExecFor is an internal helper, esp for debugging

type Flag Uses

type Flag struct {
    BaseOpt

    // ToggleGroup for Toggle Group
    ToggleGroup string
    // DefaultValuePlaceholder for flag
    DefaultValuePlaceholder string
    // DefaultValue default value for flag
    DefaultValue interface{}
    // ValidArgs for enum flag
    ValidArgs []string
    // Required to-do
    Required bool

    // ExternalTool to get the value text by invoking external tool.
    // It's an environment variable name, such as: "EDITOR" (or cmdr.ExternalToolEditor)
    ExternalTool string

    // EnvVars give a list to bind to environment variables manually
    // it'll take effects since v1.6.9
    EnvVars []string

    // HeadLike enables a free-hand option like `head -3`.
    //
    // When a free-hand option presents, it'll be treated as a named option with an integer value.
    //
    // For example, option/flag = `{{Full:"line",Short:"l"},HeadLike:true}`, the command line:
    // `app -3`
    // is equivalent to `app -l 3`, and so on.
    //
    // HeadLike assumed an named option with an integer value, that means, Min and Max can be applied on it too.
    // NOTE: Only one head-like option can be defined in a command/sub-command chain.
    HeadLike bool

    // Min minimal value of a range.
    Min int64
    // Max maximal value of a range.
    Max int64
    // contains filtered or unexported fields
}

Flag means a flag, a option, or a opt.

func FindFlag Uses

func FindFlag(longName string, cmd *Command) (res *Flag)

FindFlag find flag with `longName` from `cmd` if cmd == nil: finding from root command

func FindFlagRecursive Uses

func FindFlagRecursive(longName string, cmd *Command) (res *Flag)

FindFlagRecursive find flag with `longName` from `cmd` recursively if cmd == nil: finding from root command

func (*Flag) GetDescZsh Uses

func (s *Flag) GetDescZsh() (desc string)

GetDescZsh temp

func (*Flag) GetTitleFlagNames Uses

func (s *Flag) GetTitleFlagNames() string

GetTitleFlagNames temp

func (*Flag) GetTitleFlagNamesBy Uses

func (s *Flag) GetTitleFlagNamesBy(delimChar string) string

GetTitleFlagNamesBy temp

func (*Flag) GetTitleFlagNamesByMax Uses

func (s *Flag) GetTitleFlagNamesByMax(delimChar string, maxShort int) string

GetTitleFlagNamesByMax temp

func (*Flag) GetTitleZshFlagName Uses

func (s *Flag) GetTitleZshFlagName() (str string)

GetTitleZshFlagName temp

func (*Flag) GetTitleZshFlagNames Uses

func (s *Flag) GetTitleZshFlagNames(delimChar string) (str string)

GetTitleZshFlagNames temp

func (*Flag) GetTitleZshFlagNamesArray Uses

func (s *Flag) GetTitleZshFlagNamesArray() (ary []string)

GetTitleZshFlagNamesArray temp

func (*Flag) GetTriggeredTimes Uses

func (s *Flag) GetTriggeredTimes() int

GetTriggeredTimes returns the matched times

type Handler Uses

type Handler func(cmd *Command, args []string) (err error)

Handler handles the event on a subcommand matched

type HookFunc Uses

type HookFunc func(root *RootCommand, args []string)

HookFunc the hook function prototype for SetBeforeXrefBuilding and SetAfterXrefBuilt

type HookOptsFunc Uses

type HookOptsFunc func(root *RootCommand, opts *Options)

HookOptsFunc the hook function prototype

type Invoker Uses

type Invoker func(cmd *Command, args []string)

Invoker is a Handler but without error returns

type Level Uses

type Level uint32

Level type

const (
    // PanicLevel level, highest level of severity. Logs and then calls panic with the
    // message passed to Debug, Info, ...
    PanicLevel Level = iota
    // FatalLevel level. Logs and then calls `logger.Exit(1)`. It will exit even if the
    // logging level is set to Panic.
    FatalLevel
    // ErrorLevel level. Logs. Used for errors that should definitely be noted.
    // Commonly used for hooks to send errors to an error tracking service.
    ErrorLevel
    // WarnLevel level. Non-critical entries that deserve eyes.
    WarnLevel
    // InfoLevel level. General operational entries about what's going on inside the
    // application.
    InfoLevel
    // DebugLevel level. Usually only enabled when debugging. Very verbose logging.
    DebugLevel
    // TraceLevel level. Designates finer-grained informational events than the Debug.
    TraceLevel
    // OffLevel level. The logger will be shutdown.
    OffLevel
)

These are the different logging levels. You can set the logging level to log on your instance of logger, obtained with `logrus.New()`.

func GetLoggerLevel Uses

func GetLoggerLevel() Level

GetLoggerLevel returns the current logger level after parsed.

func ParseLevel Uses

func ParseLevel(lvl string) (Level, error)

ParseLevel takes a string level and returns the Logrus log level constant.

func (Level) MarshalText Uses

func (level Level) MarshalText() ([]byte, error)

MarshalText convert Level to string and []byte

func (Level) String Uses

func (level Level) String() string

Convert the Level to a string. E.g. PanicLevel becomes "panic".

func (*Level) UnmarshalText Uses

func (level *Level) UnmarshalText(text []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

type OnSet Uses

type OnSet interface {
    // OnSet will be callback'd after this flag parsed
    OnSet(f func(keyPath string, value interface{})) (opt OptFlag)
}

OnSet interface

type OptCmd Uses

type OptCmd interface {
    // Titles: broken API since v1.6.39
    Titles(long, short string, aliases ...string) (opt OptCmd)
    Short(short string) (opt OptCmd)
    Long(long string) (opt OptCmd)
    Aliases(ss ...string) (opt OptCmd)
    Description(oneLine string, long ...string) (opt OptCmd)
    Examples(examples string) (opt OptCmd)
    Group(group string) (opt OptCmd)
    Hidden(hidden bool) (opt OptCmd)
    Deprecated(deprecation string) (opt OptCmd)
    // Action will be triggered after all command-line arguments parsed
    Action(action Handler) (opt OptCmd)

    // PreAction will be invoked before running Action
    // NOTE that RootCommand.PreAction will be invoked too.
    PreAction(pre Handler) (opt OptCmd)
    // PostAction will be invoked after run Action
    // NOTE that RootCommand.PostAction will be invoked too.
    PostAction(post Invoker) (opt OptCmd)

    TailPlaceholder(placeholder string) (opt OptCmd)

    // NewFlag create a new flag object and return it for further operations.
    // Deprecated since v1.6.9, replace it with FlagV(defaultValue)
    NewFlag(typ OptFlagType) (opt OptFlag)
    // NewFlagV create a new flag object and return it for further operations.
    // the titles in arguments MUST be: longTitle, [shortTitle, [aliasTitles...]]
    NewFlagV(defaultValue interface{}, titles ...string) (opt OptFlag)
    // NewSubCommand make a new sub-command optcmd object with optional titles.
    // the titles in arguments MUST be: longTitle, [shortTitle, [aliasTitles...]]
    NewSubCommand(titles ...string) (opt OptCmd)

    OwnerCommand() (opt OptCmd)
    SetOwner(opt OptCmd)

    RootCommand() *RootCommand

    ToCommand() *Command

    AddOptFlag(flag OptFlag)
    AddFlag(flag *Flag)
    // AddOptCmd adds 'opt' OptCmd as a sub-command
    AddOptCmd(opt OptCmd)
    // AddCommand adds a *Command as a sub-command
    AddCommand(cmd *Command)
    // AttachTo attaches itself as a sub-command of 'opt' OptCmd object
    AttachTo(opt OptCmd)
    // AttachTo attaches itself as a sub-command of *Command object
    AttachToCommand(cmd *Command)
    // AttachTo attaches itself as a sub-command of *RootCommand object
    AttachToRoot(root *RootCommand)
}

OptCmd to support fluent api of cmdr. see also: cmdr.Root().NewSubCommand()/.NewFlag()

func NewCmd Uses

func NewCmd() (opt OptCmd)

NewCmd creates a wrapped Command object as OptCmd

func NewCmdFrom Uses

func NewCmdFrom(cmd *Command) (opt OptCmd)

NewCmdFrom creates a wrapped Command object as OptCmd, and make it as the current working item.

func NewSubCmd Uses

func NewSubCmd() (opt OptCmd)

NewSubCmd creates a wrapped Command object as OptCmd, and append it into the current working item.

type OptFlag Uses

type OptFlag interface {
    // Titles: broken API since v1.6.39
    Titles(long, short string, aliases ...string) (opt OptFlag)
    Short(short string) (opt OptFlag)
    Long(long string) (opt OptFlag)
    Aliases(ss ...string) (opt OptFlag)
    Description(oneLineDesc string, longDesc ...string) (opt OptFlag)
    Examples(examples string) (opt OptFlag)
    Group(group string) (opt OptFlag)
    Hidden(hidden bool) (opt OptFlag)
    Deprecated(deprecation string) (opt OptFlag)
    // Action will be triggered once being parsed ok
    Action(action Handler) (opt OptFlag)

    ToggleGroup(group string) (opt OptFlag)
    // DefaultValue needs an exact typed 'val'.
    // IMPORTANT: cmdr interprets value type of an option based on the underlying default value set.
    DefaultValue(val interface{}, placeholder string) (opt OptFlag)
    Placeholder(placeholder string) (opt OptFlag)
    ExternalTool(envKeyName string) (opt OptFlag)
    ValidArgs(list ...string) (opt OptFlag)
    // HeadLike enables `head -n` mode.
    // 'min', 'max' will be ignored at this version, its might be impl in the future.
    // There's only one head-like flag in one command and its parent and children commands.
    HeadLike(enable bool, min, max int64) (opt OptFlag)

    // EnvKeys is a list of env-var names of binding on this flag
    EnvKeys(keys ...string) (opt OptFlag)

    OwnerCommand() (opt OptCmd)
    SetOwner(opt OptCmd)

    RootCommand() *RootCommand

    ToFlag() *Flag

    // AttachTo attach as a flag of `opt` OptCmd object
    AttachTo(opt OptCmd)
    // AttachToCommand attach as a flag of *Command object
    AttachToCommand(cmd *Command)
    // AttachToRoot attach as a flag of *RootCommand object
    AttachToRoot(root *RootCommand)

    OnSet
}

OptFlag to support fluent api of cmdr. see also: cmdr.Root().NewSubCommand()/.NewFlag()

For an option, its default value must be declared with exact type as is

func NewBool Uses

func NewBool(defaultValue ...bool) (opt OptFlag)

NewBool creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewComplex128 Uses

func NewComplex128(defaultValue ...complex128) (opt OptFlag)

NewComplex128 creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewComplex64 Uses

func NewComplex64(defaultValue ...complex64) (opt OptFlag)

NewComplex64 creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewDuration Uses

func NewDuration(defaultValue ...time.Duration) (opt OptFlag)

NewDuration creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewDurationFrom Uses

func NewDurationFrom(flg *Flag) (opt OptFlag)

NewDurationFrom creates a wrapped OptFlag, and append it into the current working item.

func NewFloat32 Uses

func NewFloat32(defaultValue ...float32) (opt OptFlag)

NewFloat32 creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewFloat64 Uses

func NewFloat64(defaultValue ...float64) (opt OptFlag)

NewFloat64 creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewInt Uses

func NewInt(defaultValue ...int) (opt OptFlag)

NewInt creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewInt64 Uses

func NewInt64(defaultValue ...int64) (opt OptFlag)

NewInt64 creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewIntSlice Uses

func NewIntSlice(defaultValue ...int) (opt OptFlag)

NewIntSlice creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

Sample:

cmdr.NewIntSlice(1, 2, 3).Titles("int-slice", "is").Group("").
    AttachTo(parentCmdOpt)

func NewString Uses

func NewString(defaultValue ...string) (opt OptFlag)

NewString creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewStringSlice Uses

func NewStringSlice(defaultValue ...string) (opt OptFlag)

NewStringSlice creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

Sample:

cmdr.NewStringSlice("quick", "fox", "jumps").Titles("int-slice", "is").Group("").
    AttachTo(parentCmdOpt)

func NewUint Uses

func NewUint(defaultValue ...uint) (opt OptFlag)

NewUint creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewUint64 Uses

func NewUint64(defaultValue ...uint64) (opt OptFlag)

NewUint64 creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

func NewUintSlice Uses

func NewUintSlice(defaultValue ...uint) (opt OptFlag)

NewUintSlice creates a wrapped OptFlag, you can connect it to a OptCmd via OptFlag.AttachXXX later.

Sample:

cmdr.NewUintSlice(1, 2, 3).Titles("uint-slice", "us").Group("").
    AttachTo(parentCmdOpt)

type OptFlagType Uses

type OptFlagType int

OptFlagType to support fluent api of cmdr. see also: OptCmd.NewFlag(OptFlagType)

Usage

root := cmdr.Root()
co := root.NewSubCommand()
co.NewFlag(cmdr.OptFlagTypeUint)

See also those short-hand constructors: Bool(), Int(), ....

const (
    // OptFlagTypeBool to create a new bool flag
    OptFlagTypeBool OptFlagType = iota
    // OptFlagTypeInt to create a new int flag
    OptFlagTypeInt OptFlagType = iota + 1
    // OptFlagTypeUint to create a new uint flag
    OptFlagTypeUint OptFlagType = iota + 2
    // OptFlagTypeInt64 to create a new int64 flag
    OptFlagTypeInt64 OptFlagType = iota + 3
    // OptFlagTypeUint64 to create a new uint64 flag
    OptFlagTypeUint64 OptFlagType = iota + 4
    // OptFlagTypeFloat32 to create a new int float32 flag
    OptFlagTypeFloat32 OptFlagType = iota + 8
    // OptFlagTypeFloat64 to create a new int float64 flag
    OptFlagTypeFloat64 OptFlagType = iota + 9
    // OptFlagTypeComplex64 to create a new int complex64 flag
    OptFlagTypeComplex64 OptFlagType = iota + 10
    // OptFlagTypeComplex128 to create a new int complex128 flag
    OptFlagTypeComplex128 OptFlagType = iota + 11
    // OptFlagTypeString to create a new string flag
    OptFlagTypeString OptFlagType = iota + 12
    // OptFlagTypeStringSlice to create a new string slice flag
    OptFlagTypeStringSlice OptFlagType = iota + 13
    // OptFlagTypeIntSlice to create a new int slice flag
    OptFlagTypeIntSlice OptFlagType = iota + 14
    // OptFlagTypeInt64Slice to create a new int slice flag
    OptFlagTypeInt64Slice OptFlagType = iota + 15
    // OptFlagTypeUint64Slice to create a new int slice flag
    OptFlagTypeUint64Slice OptFlagType = iota + 16
    // OptFlagTypeDuration to create a new duration flag
    OptFlagTypeDuration OptFlagType = iota + 17
    // OptFlagTypeHumanReadableSize to create a new human readable size flag
    OptFlagTypeHumanReadableSize OptFlagType = iota + 18
)

type Options Uses

type Options struct {
    // contains filtered or unexported fields
}

Options is a holder of all options

func GetOptions Uses

func GetOptions() *Options

GetOptions returns the global options instance (rxxtOptions), ie. cmdr Options Store

func (*Options) Delete Uses

func (s *Options) Delete(key string)

Delete deletes a key from cmdr options store

func (*Options) DumpAsString Uses

func (s *Options) DumpAsString(showType bool) (str string)

DumpAsString for debugging.

func (*Options) FromKibibytes Uses

func (s *Options) FromKibibytes(sz string) (ir64 uint64)

FromKibibytes convert string to the uint64 value based kibibyte format.

kibibyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kibibyte is based 1024. That means: 1 KiB = 1k = 1024 bytes

See also: https://en.wikipedia.org/wiki/Kibibyte Its related word is kilobyte, refer to: https://en.wikipedia.org/wiki/Kilobyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func (*Options) FromKilobytes Uses

func (s *Options) FromKilobytes(sz string) (ir64 uint64)

FromKilobytes convert string to the uint64 value based kilobyte format.

kilobyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kilobyte is based 1000. That means: 1 KB = 1k = 1000 bytes

See also: https://en.wikipedia.org/wiki/Kilobyte Its related word is kibibyte, refer to: https://en.wikipedia.org/wiki/Kibibyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func (*Options) Get Uses

func (s *Options) Get(key string) interface{}

Get an `Option` by key string, eg: “`golang cmdr.Get("app.logger.level") => 'DEBUG',... “`

func (*Options) GetBoolEx Uses

func (s *Options) GetBoolEx(key string, defaultVal ...bool) (ret bool)

GetBoolEx returns the bool value of an `Option` key.

func (*Options) GetComplex128 Uses

func (s *Options) GetComplex128(key string, defaultVal ...complex128) (ir complex128)

GetComplex128 returns the complex128 value of an `Option` key.

func (*Options) GetComplex64 Uses

func (s *Options) GetComplex64(key string, defaultVal ...complex64) (ir complex64)

GetComplex64 returns the complex64 value of an `Option` key.

func (*Options) GetDuration Uses

func (s *Options) GetDuration(key string, defaultVal ...time.Duration) (ir time.Duration)

GetDuration returns the time duration value of an `Option` key.

func (*Options) GetFloat32Ex Uses

func (s *Options) GetFloat32Ex(key string, defaultVal ...float32) (ir float32)

GetFloat32Ex returns the float32 value of an `Option` key.

func (*Options) GetFloat64Ex Uses

func (s *Options) GetFloat64Ex(key string, defaultVal ...float64) (ir float64)

GetFloat64Ex returns the float64 value of an `Option` key.

func (*Options) GetHierarchyList Uses

func (s *Options) GetHierarchyList() map[string]interface{}

GetHierarchyList returns the hierarchy data for dumping

func (*Options) GetInt64Ex Uses

func (s *Options) GetInt64Ex(key string, defaultVal ...int64) (ir int64)

GetInt64Ex returns the int64 value of an `Option` key.

func (*Options) GetInt64Slice Uses

func (s *Options) GetInt64Slice(key string, defaultVal ...int64) (ir []int64)

GetInt64Slice returns the string slice value of an `Option` key.

func (*Options) GetIntEx Uses

func (s *Options) GetIntEx(key string, defaultVal ...int) (ir int)

GetIntEx returns the int64 value of an `Option` key.

func (*Options) GetIntSlice Uses

func (s *Options) GetIntSlice(key string, defaultVal ...int) (ir []int)

GetIntSlice returns the string slice value of an `Option` key.

func (*Options) GetKibibytesEx Uses

func (s *Options) GetKibibytesEx(key string, defaultVal ...uint64) (ir64 uint64)

GetKibibytesEx returns the uint64 value of an `Option` key based kibibyte format.

kibibyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kibibyte is based 1024. That means: 1 KiB = 1k = 1024 bytes

See also: https://en.wikipedia.org/wiki/Kibibyte Its related word is kilobyte, refer to: https://en.wikipedia.org/wiki/Kilobyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func (*Options) GetKilobytesEx Uses

func (s *Options) GetKilobytesEx(key string, defaultVal ...uint64) (ir64 uint64)

GetKilobytesEx returns the uint64 value of an `Option` key with kilobyte format.

kilobyte format is for human readable. In this format, number presentations are: 2k, 8m, 3g, 5t, 6p, 7e. optional 'b' can be appended, such as: 2kb, 5tb, 7EB. All of them is case-insensitive.

kilobyte is based 1000. That means: 1 KB = 1k = 1000 bytes

See also: https://en.wikipedia.org/wiki/Kilobyte Its related word is kibibyte, refer to: https://en.wikipedia.org/wiki/Kibibyte

The pure number part can be golang presentation, such as 0x99, 0001b, 0700.

func (*Options) GetMap Uses

func (s *Options) GetMap(key string) map[string]interface{}

GetMap an `Option` by key string, it returns a hierarchy map or nil

func (*Options) GetString Uses

func (s *Options) GetString(key string, defaultVal ...string) (ret string)

GetString returns the string value of an `Option` key.

func (*Options) GetStringNoExpand Uses

func (s *Options) GetStringNoExpand(key string, defaultVal ...string) (ret string)

GetStringNoExpand returns the string value of an `Option` key.

func (*Options) GetStringSlice Uses

func (s *Options) GetStringSlice(key string, defaultVal ...string) (ir []string)

GetStringSlice returns the string slice value of an `Option` key.

func (*Options) GetUint64Ex Uses

func (s *Options) GetUint64Ex(key string, defaultVal ...uint64) (ir uint64)

GetUint64Ex returns the uint64 value of an `Option` key.

func (*Options) GetUint64Slice Uses

func (s *Options) GetUint64Slice(key string, defaultVal ...uint64) (ir []uint64)

GetUint64Slice returns the string slice value of an `Option` key.

func (*Options) GetUintEx Uses

func (s *Options) GetUintEx(key string, defaultVal ...uint) (ir uint)

GetUintEx returns the uint64 value of an `Option` key.

func (*Options) Has Uses

func (s *Options) Has(key string) (ok bool)

Has detects whether a key exists in cmdr options store or not

func (*Options) LoadConfigFile Uses

func (s *Options) LoadConfigFile(file string) (err error)

LoadConfigFile loads a yaml config file and merge the settings into `rxxtOptions` and load files in the `conf.d` child directory too.

func (*Options) MergeWith Uses

func (s *Options) MergeWith(m map[string]interface{}) (err error)

MergeWith will merge a map recursive.

func (*Options) Reset Uses

func (s *Options) Reset()

Reset the exists `Options`, so that you could follow a `LoadConfigFile()` with it.

func (*Options) Set Uses

func (s *Options) Set(key string, val interface{})

Set set the value of an `Option` key. The key MUST not have an `app` prefix. eg: “`golang cmdr.Set("debug", true) cmdr.GetBool("app.debug") => true “`

func (*Options) SetNx Uses

func (s *Options) SetNx(key string, val interface{})

SetNx but without prefix auto-wrapped. `rxxtPrefix` is a string slice to define the prefix string array, default is ["app"]. So, cmdr.Set("debug", true) will put an real entry with (`app.debug`, true).

type Painter Uses

type Painter interface {
    Printf(fmtStr string, args ...interface{})

    FpPrintHeader(command *Command)
    FpPrintHelpTailLine(command *Command)

    FpUsagesTitle(command *Command, title string)
    FpUsagesLine(command *Command, fmt, appName, cmdList, cmdsTitle, tailPlaceHolder string)
    FpDescTitle(command *Command, title string)
    FpDescLine(command *Command)
    FpExamplesTitle(command *Command, title string)
    FpExamplesLine(command *Command)

    FpCommandsTitle(command *Command)
    FpCommandsGroupTitle(group string)
    FpCommandsLine(command *Command)
    FpFlagsTitle(command *Command, flag *Flag, title string)
    FpFlagsGroupTitle(group string)
    FpFlagsLine(command *Command, flag *Flag, maxShort int, defValStr string)

    Flush()

    Results() []byte

    // clear any internal states and reset itself
    Reset()
}

Painter to support the genManual, genMarkdown, printHelpScreen.

type RootCmdOpt Uses

type RootCmdOpt struct {
    // contains filtered or unexported fields
}

RootCmdOpt for fluent api

func Root Uses

func Root(appName, version string) (opt *RootCmdOpt)

Root for fluent api, to create a new [*RootCmdOpt] object.

func RootFrom Uses

func RootFrom(root *RootCommand) (opt *RootCmdOpt)

RootFrom for fluent api, to create the new [*RootCmdOpt] object from an existed [RootCommand]

func (*RootCmdOpt) Action Uses

func (s *RootCmdOpt) Action(action Handler) (opt OptCmd)

func (*RootCmdOpt) AddCommand Uses

func (s *RootCmdOpt) AddCommand(cmd *Command)

func (*RootCmdOpt) AddFlag Uses

func (s *RootCmdOpt) AddFlag(flag *Flag)

func (*RootCmdOpt) AddOptCmd Uses

func (s *RootCmdOpt) AddOptCmd(opt OptCmd)

func (*RootCmdOpt) AddOptFlag Uses

func (s *RootCmdOpt) AddOptFlag(flag OptFlag)

func (*RootCmdOpt) Aliases Uses

func (s *RootCmdOpt) Aliases(aliases ...string) (opt OptCmd)

func (*RootCmdOpt) AttachTo Uses

func (s *RootCmdOpt) AttachTo(opt OptCmd)

func (*RootCmdOpt) AttachToCommand Uses

func (s *RootCmdOpt) AttachToCommand(cmd *Command)

func (*RootCmdOpt) AttachToRoot Uses

func (s *RootCmdOpt) AttachToRoot(root *RootCommand)

func (*RootCmdOpt) Bool Uses

func (s *RootCmdOpt) Bool() (opt OptFlag)

func (*RootCmdOpt) Complex128 Uses

func (s *RootCmdOpt) Complex128() (opt OptFlag)

func (*RootCmdOpt) Complex64 Uses

func (s *RootCmdOpt) Complex64() (opt OptFlag)

func (*RootCmdOpt) Copyright Uses

func (s *RootCmdOpt) Copyright(copyright, author string) *RootCmdOpt

Copyright for fluent api

func (*RootCmdOpt) Deprecated Uses

func (s *RootCmdOpt) Deprecated(deprecation string) (opt OptCmd)

func (*RootCmdOpt) Description Uses

func (s *RootCmdOpt) Description(oneLine string, long ...string) (opt OptCmd)

func (*RootCmdOpt) Duration Uses

func (s *RootCmdOpt) Duration() (opt OptFlag)

func (*RootCmdOpt) Examples Uses

func (s *RootCmdOpt) Examples(examples string) (opt OptCmd)

func (*RootCmdOpt) Float32 Uses

func (s *RootCmdOpt) Float32() (opt OptFlag)

func (*RootCmdOpt) Float64 Uses

func (s *RootCmdOpt) Float64() (opt OptFlag)

func (*RootCmdOpt) Group Uses

func (s *RootCmdOpt) Group(group string) (opt OptCmd)

func (*RootCmdOpt) Header Uses

func (s *RootCmdOpt) Header(header string) *RootCmdOpt

Header for fluent api

func (*RootCmdOpt) Hidden Uses

func (s *RootCmdOpt) Hidden(hidden bool) (opt OptCmd)

func (*RootCmdOpt) Int Uses

func (s *RootCmdOpt) Int() (opt OptFlag)

func (*RootCmdOpt) Int64 Uses

func (s *RootCmdOpt) Int64() (opt OptFlag)

func (*RootCmdOpt) IntSlice Uses

func (s *RootCmdOpt) IntSlice() (opt OptFlag)

func (*RootCmdOpt) Long Uses

func (s *RootCmdOpt) Long(long string) (opt OptCmd)

func (*RootCmdOpt) NewFlag Uses

func (s *RootCmdOpt) NewFlag(typ OptFlagType) (opt OptFlag)

func (*RootCmdOpt) NewFlagV Uses

func (s *RootCmdOpt) NewFlagV(defaultValue interface{}, titles ...string) (opt OptFlag)

func (*RootCmdOpt) NewSubCommand Uses

func (s *RootCmdOpt) NewSubCommand(titles ...string) (opt OptCmd)

func (*RootCmdOpt) OwnerCommand Uses

func (s *RootCmdOpt) OwnerCommand() (opt OptCmd)

func (*RootCmdOpt) PostAction Uses

func (s *RootCmdOpt) PostAction(post Invoker) (opt OptCmd)

func (*RootCmdOpt) PreAction Uses

func (s *RootCmdOpt) PreAction(pre Handler) (opt OptCmd)

func (*RootCmdOpt) RootCommand Uses

func (s *RootCmdOpt) RootCommand() (root *RootCommand)

func (*RootCmdOpt) SetOwner Uses

func (s *RootCmdOpt) SetOwner(opt OptCmd)

func (*RootCmdOpt) Short Uses

func (s *RootCmdOpt) Short(short string) (opt OptCmd)

func (*RootCmdOpt) String Uses

func (s *RootCmdOpt) String() (opt OptFlag)

func (*RootCmdOpt) StringSlice Uses

func (s *RootCmdOpt) StringSlice() (opt OptFlag)

func (*RootCmdOpt) TailPlaceholder Uses

func (s *RootCmdOpt) TailPlaceholder(placeholder string) (opt OptCmd)

func (*RootCmdOpt) Titles Uses

func (s *RootCmdOpt) Titles(long, short string, aliases ...string) (opt OptCmd)

func (*RootCmdOpt) ToCommand Uses

func (s *RootCmdOpt) ToCommand() *Command

func (*RootCmdOpt) Uint Uses

func (s *RootCmdOpt) Uint() (opt OptFlag)

func (*RootCmdOpt) Uint64 Uses

func (s *RootCmdOpt) Uint64() (opt OptFlag)

type RootCommand Uses

type RootCommand struct {
    Command

    AppName    string
    Version    string
    VersionInt uint32

    Copyright string
    Author    string
    Header    string // using `Header` for header and ignore built with `Copyright` and `Author`, and no usage lines too.

    PostActions []Invoker
    // contains filtered or unexported fields
}

RootCommand holds some application information

func (*RootCommand) AppendPostActions Uses

func (c *RootCommand) AppendPostActions(fns ...func(cmd *Command, args []string))

AppendPostActions adds the global post-action to cmdr system

type StringDistance Uses

type StringDistance interface {
    Calc(s1, s2 string, opts ...DistanceOption) (distance int)
}

StringDistance is an interface for string metric. A string metric is a metric that measures distance between two strings. In most case, it means that the edit distance about those two strings. This is saying, it is how many times are needed while you were modifying string to another one, note that inserting, deleting, substing one character means once.

func JaroWinklerDistance Uses

func JaroWinklerDistance(opts ...DistanceOption) StringDistance

JaroWinklerDistance returns an calculator for two strings distance metric, with Jaro-Winkler algorithm.

type UnhandledErrorHandler Uses

type UnhandledErrorHandler func(err interface{})

UnhandledErrorHandler for WithUnhandledErrorHandler

type UnknownOptionHandler Uses

type UnknownOptionHandler func(isFlag bool, title string, cmd *Command, args []string) (fallbackToDefaultDetector bool)

UnknownOptionHandler for WithSimilarThreshold/SetUnknownOptionHandler

Directories

PathSynopsis
conf
flag
plugin/daemon
plugin/daemon/impl
plugin/daemon/nosig
plugin/isdelve

Package cmdr imports 34 packages (graph) and is imported by 66 packages. Updated 2020-07-01. Refresh now. Tools for package owners.