Documentation ¶
Overview ¶
Package cmdr interprets command-line arguments with POSIX style.
Index ¶
- Constants
- Variables
- func AddOnConfigLoadedListener(c ConfigReloaded)
- func AsJSON() (b []byte)
- func AsJSONExt() (b []byte, err error)
- func AsToml() (b []byte)
- func AsTomlExt() (b []byte, err error)
- func AsYaml() (b []byte)
- func AsYamlExt() (b []byte, err error)
- func Clone(fromValue, toValue interface{}) interface{}
- func DeleteKey(key string)
- func DumpAsString() (str string)
- func EnsureDir(dir string) (err error)
- func Exec(rootCmd *RootCommand, opts ...ExecOption) (err error)
- func FileExists(name string) bool
- func Get(key string) interface{}
- func GetBool(key string, defaultVal ...bool) bool
- func GetBoolP(prefix, key string, defaultVal ...bool) bool
- func GetBoolR(key string, defaultVal ...bool) bool
- func GetBoolRP(prefix, key string, defaultVal ...bool) bool
- func GetCurrentDir() string
- func GetDebugMode() bool
- func GetDuration(key string, defaultVal ...time.Duration) time.Duration
- func GetDurationP(prefix, key string, defaultVal ...time.Duration) time.Duration
- func GetDurationR(key string, defaultVal ...time.Duration) time.Duration
- func GetDurationRP(prefix, key string, defaultVal ...time.Duration) time.Duration
- func GetExcutablePath() string
- func GetExecutableDir() string
- func GetFloat32(key string, defaultVal ...float32) float32
- func GetFloat32P(prefix, key string, defaultVal ...float32) float32
- func GetFloat32R(key string, defaultVal ...float32) float32
- func GetFloat32RP(prefix, key string, defaultVal ...float32) float32
- func GetFloat64(key string, defaultVal ...float64) float64
- func GetFloat64P(prefix, key string, defaultVal ...float64) float64
- func GetFloat64R(key string, defaultVal ...float64) float64
- func GetFloat64RP(prefix, key string, defaultVal ...float64) float64
- func GetHierarchyList() map[string]interface{}
- func GetInt(key string, defaultVal ...int) int
- func GetInt64(key string, defaultVal ...int64) int64
- func GetInt64P(prefix, key string, defaultVal ...int64) int64
- func GetInt64R(key string, defaultVal ...int64) int64
- func GetInt64RP(prefix, key string, defaultVal ...int64) int64
- func GetInt64Slice(key string, defaultVal ...int64) []int64
- func GetInt64SliceP(prefix, key string, defaultVal ...int64) []int64
- func GetInt64SliceR(key string, defaultVal ...int64) []int64
- func GetInt64SliceRP(prefix, key string, defaultVal ...int64) []int64
- func GetIntP(prefix, key string, defaultVal ...int) int
- func GetIntR(key string, defaultVal ...int) int
- func GetIntRP(prefix, key string, defaultVal ...int) int
- func GetIntSlice(key string, defaultVal ...int) []int
- func GetIntSliceP(prefix, key string, defaultVal ...int) []int
- func GetIntSliceR(key string, defaultVal ...int) []int
- func GetIntSliceRP(prefix, key string, defaultVal ...int) []int
- func GetMap(key string) map[string]interface{}
- func GetMapR(key string) map[string]interface{}
- func GetNoColorMode() bool
- func GetPredefinedLocations() []string
- func GetQuietMode() bool
- func GetR(key string) interface{}
- func GetSectionFrom(sectionKeyPath string, holder interface{}) (err error)
- func GetStrictMode() bool
- func GetString(key string, defaultVal ...string) string
- func GetStringNoExpand(key string, defaultVal ...string) string
- func GetStringNoExpandP(prefix, key string, defaultVal ...string) string
- func GetStringNoExpandR(key string, defaultVal ...string) string
- func GetStringNoExpandRP(prefix, key string, defaultVal ...string) string
- func GetStringP(prefix, key string, defaultVal ...string) string
- func GetStringR(key string, defaultVal ...string) string
- func GetStringRP(prefix, key string, defaultVal ...string) string
- func GetStringSlice(key string, defaultVal ...string) []string
- func GetStringSliceP(prefix, key string, defaultVal ...string) []string
- func GetStringSliceR(key string, defaultVal ...string) []string
- func GetStringSliceRP(prefix, key string, defaultVal ...string) []string
- func GetUint(key string, defaultVal ...uint) uint
- func GetUint64(key string, defaultVal ...uint64) uint64
- func GetUint64P(prefix, key string, defaultVal ...uint64) uint64
- func GetUint64R(key string, defaultVal ...uint64) uint64
- func GetUint64RP(prefix, key string, defaultVal ...uint64) uint64
- func GetUint64Slice(key string, defaultVal ...uint64) []uint64
- func GetUint64SliceP(prefix, key string, defaultVal ...uint64) []uint64
- func GetUint64SliceR(key string, defaultVal ...uint64) []uint64
- func GetUint64SliceRP(prefix, key string, defaultVal ...uint64) []uint64
- func GetUintP(prefix, key string, defaultVal ...uint) uint
- func GetUintR(key string, defaultVal ...uint) uint
- func GetUintRP(prefix, key string, defaultVal ...uint) uint
- func GetUsedConfigFile() string
- func GetUsedConfigSubDir() string
- func GetUsingConfigFiles() []string
- func GetVerboseMode() bool
- func HasKey(key string) (ok bool)
- func InDebugging() bool
- func InTesting() bool
- func IsDebuggerAttached() bool
- func IsDigitHeavy(s string) bool
- func IsDirectory(path string) (bool, error)
- func IsRegularFile(path string) (bool, error)
- func Launch(cmd string, args ...string) (err error)
- func LaunchEditor(editor string) (content []byte, err error)
- func LaunchEditorWith(editor string, filename string) (content []byte, err error)
- func LoadConfigFile(file string) (err error)
- func MergeWith(m map[string]interface{}) (err error)
- func NormalizeDir(s string) string
- func PressAnyKeyToContinue(in io.Reader, msg ...string) (input string)
- func PressEnterToContinue(in io.Reader, msg ...string) (input string)
- func RemoveDirRecursive(dir string) (err error)
- func RemoveOnConfigLoadedListener(c ConfigReloaded)
- func ResetOptions()
- func SaveAsJSON(filename string) (err error)
- func SaveAsToml(filename string) (err error)
- func SaveAsYaml(filename string) (err error)
- func SaveObjAsToml(obj interface{}, filename string) (err error)
- func Set(key string, val interface{})
- func SetNx(key string, val interface{})
- func SetOnConfigLoadedListener(c ConfigReloaded, enabled bool)
- func SignalQuitSignal()
- func SignalTermSignal()
- func SignalToSelf(sig os.Signal) (err error)
- func Soundex(s string) (snd4 string)
- func StripOrderPrefix(s string) string
- func StripPrefix(s, p string) string
- func StripQuotes(s string) string
- func TrapSignals(onTrapped func(s os.Signal), signals ...os.Signal) (waiter func())
- func TrapSignalsEnh(done chan bool, onTrapped func(s os.Signal), signals ...os.Signal) (waiter func())
- func WalkAllCommands(walk func(cmd *Command, index int) (err error)) (err error)
- func WrapWithRxxtPrefix(key string) string
- type BaseOpt
- func (s *BaseOpt) GetLongTitleNamesArray() []string
- func (s *BaseOpt) GetShortTitleNamesArray() []string
- func (s *BaseOpt) GetTitleName() string
- func (s *BaseOpt) GetTitleNames() string
- func (s *BaseOpt) GetTitleNamesArray() []string
- func (s *BaseOpt) GetTitleNamesBy(delimChar string) string
- func (s *BaseOpt) HasParent() bool
- type Command
- func (c *Command) FindFlag(longName string) (res *Flag)
- func (c *Command) FindFlagRecursive(longName string) (res *Flag)
- func (c *Command) FindSubCommand(longName string) (res *Command)
- func (c *Command) FindSubCommandRecursive(longName string) (res *Command)
- func (c *Command) GetExpandableNames() string
- func (c *Command) GetExpandableNamesArray() []string
- func (c *Command) GetHitStr() string
- func (c *Command) GetName() string
- func (c *Command) GetOwner() *Command
- func (c *Command) GetParentName() string
- func (c *Command) GetQuotedGroupName() string
- func (c *Command) GetRoot() *RootCommand
- func (c *Command) GetSubCommandNamesBy(delimChar string) string
- func (c *Command) IsRoot() bool
- func (c *Command) PrintBuildInfo()
- func (c *Command) PrintHelp(justFlags bool)
- func (c *Command) PrintVersion()
- type ConfigReloaded
- type Copier
- type DistanceOption
- type ErrorForCmdr
- func (e *ErrorForCmdr) Attach(errors ...error) *ErrorForCmdr
- func (e *ErrorForCmdr) Error() string
- func (e *ErrorForCmdr) Format(args ...interface{}) *ErrorForCmdr
- func (e *ErrorForCmdr) Msg(msg string, args ...interface{}) *ErrorForCmdr
- func (e *ErrorForCmdr) Nest(errors ...error) *ErrorForCmdr
- func (e *ErrorForCmdr) Template(tmpl string) *ErrorForCmdr
- type ExecOption
- func WithAfterArgsParsed(hookFunc func(cmd *Command, args []string) (err error)) ExecOption
- func WithAutomaticEnvHooks(hook HookOptsFunc) ExecOption
- func WithBuiltinCommands(versionsCmds, helpCmds, verboseCmds, generateCmds, generalCmdrCmds bool) ExecOption
- func WithConfigLoadedListener(c ConfigReloaded) ExecOption
- func WithCustomShowBuildInfo(fn func()) ExecOption
- func WithCustomShowVersion(fn func()) ExecOption
- func WithEnvPrefix(prefix ...string) ExecOption
- func WithEnvVarMap(varToValue map[string]func() string) ExecOption
- func WithHelpPainter(painter Painter) ExecOption
- func WithHelpTabStop(tabStop int) ExecOption
- func WithHelpTailLine(line string) ExecOption
- func WithIgnoreWrongEnumValue(ignored bool) ExecOption
- func WithInternalOutputStreams(out, err *bufio.Writer) ExecOption
- func WithLogex(lvl logrus.Level, opts ...logex.LogexOption) ExecOption
- func WithLogexPrefix(prefix string) ExecOption
- func WithNoColor(b bool) ExecOption
- func WithNoCommandAction(b bool) ExecOption
- func WithNoDefaultHelpScreen(b bool) ExecOption
- func WithNoEnvOverrides(b bool) ExecOption
- func WithNoLoadConfigFiles(b bool) ExecOption
- func WithNoWatchConfigFiles(b bool) ExecOption
- func WithOnPassThruCharHit(fn func(parsed *Command, switchChar string, args []string) (err error)) ExecOption
- func WithOnSwitchCharHit(fn func(parsed *Command, switchChar string, args []string) (err error)) ExecOption
- func WithOptionMergeModifying(onMergingSet func(keyPath string, value, oldVal interface{})) ExecOption
- func WithOptionModifying(onOptionSet func(keyPath string, value, oldVal interface{})) ExecOption
- func WithOptionsPrefix(prefix ...string) ExecOption
- func WithPredefinedLocations(locations ...string) ExecOption
- func WithRxxtPrefix(prefix ...string) ExecOption
- func WithSimilarThreshold(similiarThreshold float64) ExecOption
- func WithStrictMode(b bool) ExecOption
- func WithUnhandledErrorHandler(handler UnhandledErrorHandler) ExecOption
- func WithUnknownOptionHandler(handler UnknownOptionHandler) ExecOption
- func WithWatchMainConfigFileToo(b bool) ExecOption
- func WithXrefBuildingHooks(beforeXrefBuildingX, afterXrefBuiltX HookFunc) ExecOption
- type ExecWorker
- type Flag
- func (s *Flag) GetDescZsh() (desc string)
- func (s *Flag) GetTitleFlagNames() string
- func (s *Flag) GetTitleFlagNamesBy(delimChar string) string
- func (s *Flag) GetTitleFlagNamesByMax(delimChar string, maxCount int) string
- func (s *Flag) GetTitleZshFlagName() (str string)
- func (s *Flag) GetTitleZshFlagNames(delimChar string) (str string)
- func (s *Flag) GetTitleZshFlagNamesArray() (ary []string)
- func (s *Flag) GetTriggeredTimes() int
- type HookFunc
- type HookOptsFunc
- type OnSet
- type OptCmd
- type OptFlag
- func NewBool(defaultValue bool) (opt OptFlag)
- func NewDuration(defaultValue time.Duration) (opt OptFlag)
- func NewDurationFrom(flg *Flag) (opt OptFlag)
- func NewFloat32(defaultValue float32) (opt OptFlag)
- func NewFloat64(defaultValue float64) (opt OptFlag)
- func NewInt(defaultValue int) (opt OptFlag)
- func NewInt64(defaultValue int64) (opt OptFlag)
- func NewIntSlice(defaultValue []int) (opt OptFlag)
- func NewString(defaultValue string) (opt OptFlag)
- func NewStringSlice(defaultValue []string) (opt OptFlag)
- func NewUint(defaultValue uint) (opt OptFlag)
- func NewUint64(defaultValue uint64) (opt OptFlag)
- type OptFlagType
- type Options
- func (s *Options) Delete(key string)
- func (s *Options) DumpAsString() (str string)
- func (s *Options) Get(key string) interface{}
- func (s *Options) GetBoolEx(key string, defaultVal ...bool) (ret bool)
- func (s *Options) GetDuration(key string, defaultVal ...time.Duration) (ir time.Duration)
- func (s *Options) GetFloat32Ex(key string, defaultVal ...float32) (ir float32)
- func (s *Options) GetFloat64Ex(key string, defaultVal ...float64) (ir float64)
- func (s *Options) GetHierarchyList() map[string]interface{}
- func (s *Options) GetInt64Ex(key string, defaultVal ...int64) (ir int64)
- func (s *Options) GetInt64Slice(key string, defaultVal ...int64) (ir []int64)
- func (s *Options) GetIntEx(key string, defaultVal ...int) (ir int)
- func (s *Options) GetIntSlice(key string, defaultVal ...int) (ir []int)
- func (s *Options) GetMap(key string) map[string]interface{}
- func (s *Options) GetString(key string, defaultVal ...string) (ret string)
- func (s *Options) GetStringNoExpand(key string, defaultVal ...string) (ret string)
- func (s *Options) GetStringSlice(key string, defaultVal ...string) (ir []string)
- func (s *Options) GetUint64Ex(key string, defaultVal ...uint64) (ir uint64)
- func (s *Options) GetUint64Slice(key string, defaultVal ...uint64) (ir []uint64)
- func (s *Options) GetUintEx(key string, defaultVal ...uint) (ir uint)
- func (s *Options) Has(key string) (ok bool)
- func (s *Options) LoadConfigFile(file string) (err error)
- func (s *Options) MergeWith(m map[string]interface{}) (err error)
- func (s *Options) Reset()
- func (s *Options) Set(key string, val interface{})
- func (s *Options) SetNx(key string, val interface{})
- type Painter
- type RootCmdOpt
- func (s *RootCmdOpt) Action(action func(cmd *Command, args []string) (err error)) (opt OptCmd)
- func (s *RootCmdOpt) AddCommand(cmd *Command)
- func (s *RootCmdOpt) AddFlag(flag *Flag)
- func (s *RootCmdOpt) AddOptCmd(opt OptCmd)
- func (s *RootCmdOpt) AddOptFlag(flag OptFlag)
- func (s *RootCmdOpt) Aliases(aliases ...string) (opt OptCmd)
- func (s *RootCmdOpt) AttachTo(opt OptCmd)
- func (s *RootCmdOpt) AttachToCommand(cmd *Command)
- func (s *RootCmdOpt) AttachToRoot(root *RootCommand)
- func (s *RootCmdOpt) Bool() (opt OptFlag)
- func (s *RootCmdOpt) Copyright(copyright, author string) *RootCmdOpt
- func (s *RootCmdOpt) Deprecated(deprecation string) (opt OptCmd)
- func (s *RootCmdOpt) Description(oneLine, long string) (opt OptCmd)
- func (s *RootCmdOpt) Duration() (opt OptFlag)
- func (s *RootCmdOpt) Examples(examples string) (opt OptCmd)
- func (s *RootCmdOpt) Float32() (opt OptFlag)
- func (s *RootCmdOpt) Float64() (opt OptFlag)
- func (s *RootCmdOpt) Group(group string) (opt OptCmd)
- func (s *RootCmdOpt) Header(header string) *RootCmdOpt
- func (s *RootCmdOpt) Hidden(hidden bool) (opt OptCmd)
- func (s *RootCmdOpt) Int() (opt OptFlag)
- func (s *RootCmdOpt) Int64() (opt OptFlag)
- func (s *RootCmdOpt) IntSlice() (opt OptFlag)
- func (s *RootCmdOpt) Long(long string) (opt OptCmd)
- func (s *RootCmdOpt) NewFlag(typ OptFlagType) (opt OptFlag)
- func (s *RootCmdOpt) NewFlagV(defaultValue interface{}) (opt OptFlag)
- func (s *RootCmdOpt) NewSubCommand() (opt OptCmd)
- func (s *RootCmdOpt) OwnerCommand() (opt OptCmd)
- func (s *RootCmdOpt) PostAction(post func(cmd *Command, args []string)) (opt OptCmd)
- func (s *RootCmdOpt) PreAction(pre func(cmd *Command, args []string) (err error)) (opt OptCmd)
- func (s *RootCmdOpt) RootCommand() (root *RootCommand)
- func (s *RootCmdOpt) SetOwner(opt OptCmd)
- func (s *RootCmdOpt) Short(short string) (opt OptCmd)
- func (s *RootCmdOpt) String() (opt OptFlag)
- func (s *RootCmdOpt) StringSlice() (opt OptFlag)
- func (s *RootCmdOpt) TailPlaceholder(placeholder string) (opt OptCmd)
- func (s *RootCmdOpt) Titles(short, long string, aliases ...string) (opt OptCmd)
- func (s *RootCmdOpt) ToCommand() *Command
- func (s *RootCmdOpt) Uint() (opt OptFlag)
- func (s *RootCmdOpt) Uint64() (opt OptFlag)
- type RootCommand
- type StringDistance
- type UnhandledErrorHandler
- type UnknownOptionHandler
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.18" // VersionInt const VersionInt = 0x010612 )
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{true, true, true} // StandardCopier is a normal copier StandardCopier = &copierImpl{false, false, false} )
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 SavedOsArgs []string
SavedOsArgs is a copy of os.Args, just for testing
Functions ¶
func AddOnConfigLoadedListener ¶
func AddOnConfigLoadedListener(c ConfigReloaded)
AddOnConfigLoadedListener adds an functor on config loaded and merged
func AsJSON ¶ added in v1.1.1
func AsJSON() (b []byte)
AsJSON returns a json string bytes about all options
func AsToml ¶ added in v1.1.1
func AsToml() (b []byte)
AsToml returns a toml string bytes about all options
func AsYaml ¶ added in v1.1.1
func AsYaml() (b []byte)
AsYaml returns a yaml string bytes about all options
func Clone ¶ added in v0.2.3
func Clone(fromValue, toValue interface{}) interface{}
Clone deep copy source to target
func DeleteKey ¶ added in v1.6.3
func DeleteKey(key string)
DeleteKey deletes a key from cmdr options store
func Exec ¶
func Exec(rootCmd *RootCommand, opts ...ExecOption) (err error)
Exec is main entry of `cmdr`.
func FileExists ¶
FileExists returns the existence of an directory or file
func Get ¶
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 ¶
GetBool returns the bool value of an `Option` key. Such as: ```golang cmdr.GetBool("app.logger.enable", false) => true,... ```
func GetBoolP ¶ added in v0.2.3
GetBoolP returns the bool value of an `Option` key. Such as: ```golang cmdr.GetBoolP("app.logger", "enable", false) => true,... ```
func GetBoolR ¶ added in v0.2.23
GetBoolR returns the bool value of an `Option` key with WrapWithRxxtPrefix. Such as: ```golang cmdr.GetBoolR("logger.enable", false) => true,... ```
func GetBoolRP ¶ added in v0.2.23
GetBoolRP returns the bool value of an `Option` key with WrapWithRxxtPrefix. Such as: ```golang cmdr.GetBoolRP("logger", "enable", false) => true,... ```
func GetCurrentDir ¶
func GetCurrentDir() string
GetCurrentDir returns the current workingFlag directory it should be equal with os.Getenv("PWD")
func GetDebugMode ¶ added in v0.2.5
func GetDebugMode() bool
GetDebugMode returns the flag value of `--debug`/`-D`
func GetDuration ¶ added in v0.2.19
GetDuration returns the int slice value of an `Option` key.
func GetDurationP ¶ added in v0.2.19
GetDurationP returns the int slice value of an `Option` key.
func GetDurationR ¶ added in v1.0.0
GetDurationR returns the int slice value of an `Option` key.
func GetDurationRP ¶ added in v1.0.0
GetDurationRP returns the int slice value of an `Option` key.
func GetExcutablePath ¶ added in v0.2.13
func GetExcutablePath() string
GetExcutablePath returns the executable file path
func GetExecutableDir ¶ added in v1.6.0
func GetExecutableDir() string
GetExecutableDir returns the executable file directory
func GetFloat32 ¶ added in v1.0.1
GetFloat32 returns the float32 value of an `Option` key.
func GetFloat32P ¶ added in v1.0.1
GetFloat32P returns the float32 value of an `Option` key.
func GetFloat32R ¶ added in v1.0.1
GetFloat32R returns the float32 value of an `Option` key with WrapWithRxxtPrefix.
func GetFloat32RP ¶ added in v1.0.1
GetFloat32RP returns the float32 value of an `Option` key with WrapWithRxxtPrefix.
func GetFloat64 ¶ added in v1.0.1
GetFloat64 returns the float64 value of an `Option` key.
func GetFloat64P ¶ added in v1.0.1
GetFloat64P returns the float64 value of an `Option` key.
func GetFloat64R ¶ added in v1.0.1
GetFloat64R returns the float64 value of an `Option` key with WrapWithRxxtPrefix.
func GetFloat64RP ¶ added in v1.0.1
GetFloat64RP returns the float64 value of an `Option` key with WrapWithRxxtPrefix.
func GetHierarchyList ¶ added in v1.1.1
func GetHierarchyList() map[string]interface{}
GetHierarchyList returns the hierarchy data
func GetInt64R ¶ added in v0.2.23
GetInt64R returns the int64 value of an `Option` key with WrapWithRxxtPrefix.
func GetInt64RP ¶ added in v0.2.23
GetInt64RP returns the int64 value of an `Option` key with WrapWithRxxtPrefix.
func GetInt64Slice ¶ added in v1.6.3
GetInt64Slice returns the int slice value of an `Option` key.
func GetInt64SliceP ¶ added in v1.6.3
GetInt64SliceP returns the int slice value of an `Option` key.
func GetInt64SliceR ¶ added in v1.6.3
GetInt64SliceR returns the int slice value of an `Option` key with WrapWithRxxtPrefix.
func GetInt64SliceRP ¶ added in v1.6.3
GetInt64SliceRP returns the int slice value of an `Option` key with WrapWithRxxtPrefix.
func GetIntR ¶ added in v0.2.23
GetIntR returns the int value of an `Option` key with WrapWithRxxtPrefix.
func GetIntRP ¶ added in v0.2.23
GetIntRP returns the int value of an `Option` key with WrapWithRxxtPrefix.
func GetIntSlice ¶ added in v0.2.19
GetIntSlice returns the int slice value of an `Option` key.
func GetIntSliceP ¶ added in v0.2.19
GetIntSliceP returns the int slice value of an `Option` key.
func GetIntSliceR ¶ added in v0.2.23
GetIntSliceR returns the int slice value of an `Option` key with WrapWithRxxtPrefix.
func GetIntSliceRP ¶ added in v0.2.23
GetIntSliceRP returns the int slice value of an `Option` key with WrapWithRxxtPrefix.
func GetMapR ¶ added in v1.0.0
GetMapR an `Option` by key string with WrapWithRxxtPrefix, it returns a hierarchy map or nil
func GetNoColorMode ¶ added in v1.6.3
func GetNoColorMode() bool
GetNoColorMode return the flag value of `--no-color`
func GetPredefinedLocations ¶ added in v0.2.5
func GetPredefinedLocations() []string
GetPredefinedLocations return the searching locations for loading config files.
func GetQuietMode ¶ added in v0.2.5
func GetQuietMode() bool
GetQuietMode returns the flag value of `--quiet`/`-q`
func GetR ¶ added in v0.2.23
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 ¶ added in v1.0.1
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 ¶ added in v0.2.5
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 GetStringNoExpand ¶ added in v1.6.7
GetStringNoExpand returns the string value of an `Option` key.
func GetStringNoExpandP ¶ added in v1.6.7
GetStringNoExpandP returns the string value of an `Option` key.
func GetStringNoExpandR ¶ added in v1.6.7
GetStringNoExpandR returns the string value of an `Option` key with WrapWithRxxtPrefix.
func GetStringNoExpandRP ¶ added in v1.6.7
GetStringNoExpandRP returns the string value of an `Option` key with WrapWithRxxtPrefix.
func GetStringP ¶ added in v0.2.3
GetStringP returns the string value of an `Option` key.
func GetStringR ¶ added in v0.2.23
GetStringR returns the string value of an `Option` key with WrapWithRxxtPrefix.
func GetStringRP ¶ added in v0.2.23
GetStringRP returns the string value of an `Option` key with WrapWithRxxtPrefix.
func GetStringSlice ¶
GetStringSlice returns the string slice value of an `Option` key.
func GetStringSliceP ¶ added in v0.2.3
GetStringSliceP returns the string slice value of an `Option` key.
func GetStringSliceR ¶ added in v0.2.23
GetStringSliceR returns the string slice value of an `Option` key with WrapWithRxxtPrefix.
func GetStringSliceRP ¶ added in v0.2.23
GetStringSliceRP returns the string slice value of an `Option` key with WrapWithRxxtPrefix.
func GetUint64P ¶ added in v0.2.3
GetUint64P returns the uint64 value of an `Option` key.
func GetUint64R ¶ added in v0.2.23
GetUint64R returns the uint64 value of an `Option` key with WrapWithRxxtPrefix.
func GetUint64RP ¶ added in v0.2.23
GetUint64RP returns the uint64 value of an `Option` key with WrapWithRxxtPrefix.
func GetUint64Slice ¶ added in v1.6.3
GetUint64Slice returns the int slice value of an `Option` key.
func GetUint64SliceP ¶ added in v1.6.3
GetUint64SliceP returns the int slice value of an `Option` key.
func GetUint64SliceR ¶ added in v1.6.3
GetUint64SliceR returns the int slice value of an `Option` key with WrapWithRxxtPrefix.
func GetUint64SliceRP ¶ added in v1.6.3
GetUint64SliceRP returns the int slice value of an `Option` key with WrapWithRxxtPrefix.
func GetUintR ¶ added in v0.2.23
GetUintR returns the uint value of an `Option` key with WrapWithRxxtPrefix.
func GetUintRP ¶ added in v0.2.23
GetUintRP returns the uint value of an `Option` key with WrapWithRxxtPrefix.
func GetUsedConfigFile ¶ added in v0.2.3
func GetUsedConfigFile() string
GetUsedConfigFile returns the main config filename (generally it's `<appname>.yml`)
func GetUsedConfigSubDir ¶ added in v0.2.3
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 ¶ added in v1.6.9
func GetUsingConfigFiles() []string
GetUsingConfigFiles returns all loaded config files, includes the main config file and children in sub-directory `conf.d`.
func GetVerboseMode ¶ added in v0.2.5
func GetVerboseMode() bool
GetVerboseMode returns the flag value of `--verbose`/`-v`
func InDebugging ¶ added in v1.6.7
func InDebugging() bool
InDebugging return the status if in debug mode noinspection GoBoolExpressions
func InTesting ¶ added in v0.2.19
func InTesting() bool
InTesting detects whether is running under go test mode
func IsDebuggerAttached ¶ added in v1.6.7
func IsDebuggerAttached() bool
IsDebuggerAttached return the status if in debug mode noinspection GoBoolExpressions
func IsDigitHeavy ¶ added in v1.0.2
IsDigitHeavy tests if the whole string is digit
func IsDirectory ¶ added in v0.2.21
IsDirectory tests whether `path` is a directory or not
func IsRegularFile ¶ added in v0.2.21
IsRegularFile tests whether `path` is a normal regular file or not
func Launch ¶ added in v0.2.13
Launch executes a command setting both standard input, output and error.
func LaunchEditor ¶ added in v0.2.13
LaunchEditor launches the specified editor
func LaunchEditorWith ¶ added in v0.2.19
LaunchEditorWith launches the specified editor with a filename
func LoadConfigFile ¶
LoadConfigFile loads a yaml config file and merge the settings into `rxxtOptions` and load files in the `conf.d` child directory too.
func MergeWith ¶ added in v1.1.4
MergeWith will merge a map recursive. You could merge a yaml/json/toml options into cmdr Hierarchy Options.
func NormalizeDir ¶ added in v0.2.19
NormalizeDir make dir name normalized
func PressAnyKeyToContinue ¶ added in v1.6.8
PressAnyKeyToContinue lets program pause and wait for user's ANY key press in console/terminal
func PressEnterToContinue ¶ added in v1.6.8
PressEnterToContinue lets program pause and wait for user's ENTER key press in console/terminal
func RemoveDirRecursive ¶ added in v1.6.3
RemoveDirRecursive removes a directory and any children it contains.
func RemoveOnConfigLoadedListener ¶
func RemoveOnConfigLoadedListener(c ConfigReloaded)
RemoveOnConfigLoadedListener remove an functor on config loaded and merged
func ResetOptions ¶ added in v0.2.19
func ResetOptions()
ResetOptions to reset the exists `Options`, so that you could follow a `LoadConfigFile()` with it.
func SaveAsJSON ¶ added in v0.2.17
SaveAsJSON to Save all config entries as a json file
func SaveAsToml ¶ added in v0.2.17
SaveAsToml to Save all config entries as a toml file
func SaveAsYaml ¶ added in v0.2.17
SaveAsYaml to Save all config entries as a yaml file
func SaveObjAsToml ¶ added in v0.2.19
SaveObjAsToml to Save an object as a toml file
func Set ¶ added in v0.2.3
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 ¶ added in v0.2.3
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 ¶
func SetOnConfigLoadedListener(c ConfigReloaded, enabled bool)
SetOnConfigLoadedListener enable/disable an functor on config loaded and merged
func SignalQuitSignal ¶ added in v1.6.7
func SignalQuitSignal()
SignalQuitSignal post a SIGQUIT signal to the current process
func SignalTermSignal ¶ added in v1.6.7
func SignalTermSignal()
SignalTermSignal post a SIGTERM signal to the current process
func SignalToSelf ¶ added in v1.6.7
SignalToSelf trigger the sig signal to the current process
func Soundex ¶ added in v0.2.25
Soundex returns the english word's soundex value, such as: 'tags' => 't322'
func StripOrderPrefix ¶ added in v0.2.9
StripOrderPrefix strips the prefix string fragment for sorting order. see also: Command.Group, Flag.Group, ...
func StripPrefix ¶ added in v1.6.8
StripPrefix strips the prefix 'p' from a string 's'
func StripQuotes ¶ added in v1.6.8
StripQuotes strips single or double quotes around a string
func TrapSignals ¶ added in v1.1.7
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 ¶ added in v1.6.7
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 ¶ added in v0.2.9
WalkAllCommands loops for all commands, starting from root.
func WrapWithRxxtPrefix ¶ added in v0.2.23
WrapWithRxxtPrefix wrap an key with [RxxtPrefix], for [GetXxx(key)] and [GetXxxP(prefix,key)]
Types ¶
type BaseOpt ¶
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 func(cmd *Command, args []string) (err error) // contains filtered or unexported fields }
BaseOpt is base of `Command`, `Flag`
func (*BaseOpt) GetLongTitleNamesArray ¶ added in v0.2.3
GetLongTitleNamesArray returns long name and aliases as an array
func (*BaseOpt) GetShortTitleNamesArray ¶ added in v0.2.3
GetShortTitleNamesArray returns short name as an array
func (*BaseOpt) GetTitleName ¶
GetTitleName returns name/full/short string
func (*BaseOpt) GetTitleNames ¶
GetTitleNames return the joint string of short,full,aliases names
func (*BaseOpt) GetTitleNamesArray ¶
GetTitleNamesArray returns short,full,aliases names
func (*BaseOpt) GetTitleNamesBy ¶
GetTitleNamesBy returns the joint string of short,full,aliases names
type Command ¶
type Command struct { BaseOpt Flags []*Flag SubCommands []*Command // return: ErrShouldBeStopException will break the following flow and exit right now PreAction func(cmd *Command, args []string) (err error) // PostAction will be run after Action() invoked. PostAction func(cmd *Command, args []string) // 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 ¶ added in v0.2.17
FindSubCommand find sub-command with `longName` from `cmd` if cmd == nil: finding from root command
func FindSubCommandRecursive ¶ added in v0.2.17
FindSubCommandRecursive find sub-command with `longName` from `cmd` recursively if cmd == nil: finding from root command
func Match ¶ added in v1.6.17
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) FindFlagRecursive ¶ added in v1.5.1
FindFlagRecursive find flag with `longName` from `cmd` recursively
func (*Command) FindSubCommand ¶ added in v1.5.1
FindSubCommand find sub-command with `longName` from `cmd`
func (*Command) FindSubCommandRecursive ¶ added in v1.5.1
FindSubCommandRecursive find sub-command with `longName` from `cmd` recursively
func (*Command) GetExpandableNames ¶
GetExpandableNames returns the names comma splitted string.
func (*Command) GetExpandableNamesArray ¶
GetExpandableNamesArray returns the names array of command, includes short name and long name.
func (*Command) GetParentName ¶
GetParentName returns the owner command name
func (*Command) GetQuotedGroupName ¶
GetQuotedGroupName returns the group name quoted string.
func (*Command) GetRoot ¶
func (c *Command) GetRoot() *RootCommand
GetRoot returns the `RootCommand`
func (*Command) GetSubCommandNamesBy ¶
GetSubCommandNamesBy returns the joint string of subcommands
func (*Command) PrintBuildInfo ¶ added in v1.5.0
func (c *Command) PrintBuildInfo()
PrintBuildInfo print building information
func (*Command) PrintVersion ¶
func (c *Command) PrintVersion()
PrintVersion prints versions information
type ConfigReloaded ¶
type ConfigReloaded interface {
OnConfigReloaded()
}
ConfigReloaded for config reloaded
type Copier ¶ added in v0.2.3
type Copier interface {
Copy(toValue interface{}, fromValue interface{}, ignoreNames ...string) (err error)
}
Copier interface Copier is based on from github.com/jinzhu/copier
type DistanceOption ¶ added in v1.1.3
type DistanceOption func(StringDistance)
DistanceOption is a functional options prototype
func JWWithThreshold ¶ added in v1.1.3
func JWWithThreshold(threshold float64) DistanceOption
JWWithThreshold sets the threshold for Jaro-Winkler algorithm.
type ErrorForCmdr ¶ added in v1.0.2
ErrorForCmdr structure
func (*ErrorForCmdr) Attach ¶ added in v1.6.9
func (e *ErrorForCmdr) Attach(errors ...error) *ErrorForCmdr
Attach attaches the nested errors into ErrorForCmdr
Note that `ExtErr.Template()` had been overridden here
func (*ErrorForCmdr) Error ¶ added in v1.0.2
func (e *ErrorForCmdr) Error() string
func (*ErrorForCmdr) Format ¶ added in v1.6.9
func (e *ErrorForCmdr) Format(args ...interface{}) *ErrorForCmdr
Format compiles the final msg with string template and args
Note that `ExtErr.Template()` had been overridden here
func (*ErrorForCmdr) Msg ¶ added in v1.0.2
func (e *ErrorForCmdr) Msg(msg string, args ...interface{}) *ErrorForCmdr
Msg encodes a formattable msg with args into ErrorForCmdr
Note that `ExtErr.Template()` had been overridden here
func (*ErrorForCmdr) Nest ¶ added in v1.6.9
func (e *ErrorForCmdr) Nest(errors ...error) *ErrorForCmdr
Nest attaches the nested errors into ErrorForCmdr
Note that `ExtErr.Template()` had been overridden here
func (*ErrorForCmdr) Template ¶ added in v1.6.9
func (e *ErrorForCmdr) Template(tmpl string) *ErrorForCmdr
Template setup a string format template. Coder could compile the error object with formatting args later.
Note that `ExtErr.Template()` had been overrided here
type ExecOption ¶ added in v1.5.0
type ExecOption func(w *ExecWorker)
ExecOption is the functional option for Exec()
func WithAfterArgsParsed ¶ added in v1.6.3
func WithAfterArgsParsed(hookFunc func(cmd *Command, args []string) (err error)) 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 ¶ added in v1.5.1
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
func WithConfigLoadedListener(c ConfigReloaded) ExecOption
WithConfigLoadedListener adds a functor on config loaded and merged
func WithCustomShowBuildInfo ¶ added in v1.5.0
func WithCustomShowBuildInfo(fn func()) ExecOption
WithCustomShowBuildInfo supports your `ShowBuildInfo()` instead of internal `showBuildInfo()`
func WithCustomShowVersion ¶ added in v1.5.0
func WithCustomShowVersion(fn func()) ExecOption
WithCustomShowVersion supports your `ShowVersion()` instead of internal `showVersion()`
func WithEnvPrefix ¶ added in v1.5.0
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 ¶ added in v1.6.3
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 ¶ added in v1.5.0
func WithHelpPainter(painter Painter) ExecOption
WithHelpPainter allows to change the behavior and facade of help screen.
func WithHelpTabStop ¶ added in v1.5.0
func WithHelpTabStop(tabStop int) ExecOption
WithHelpTabStop sets the tab-stop position in the help screen Default tabstop is 48
func WithHelpTailLine ¶ added in v1.6.11
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
func WithInternalOutputStreams(out, err *bufio.Writer) ExecOption
WithInternalOutputStreams sets the internal output streams for debugging
func WithLogex ¶ added in v1.6.3
func WithLogex(lvl logrus.Level, opts ...logex.LogexOption) ExecOption
WithLogex enables logex integration
func WithLogexPrefix ¶ added in v1.6.5
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 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 WithNoColor ¶ added in v1.6.3
func WithNoColor(b bool) ExecOption
WithNoColor make console outputs plain and without ANSI escape colors
Since v1.6.2+
func WithNoCommandAction ¶ added in v1.6.17
func WithNoCommandAction(b bool) ExecOption
WithNoCommandAction do NOT run the action of the matched command.
func WithNoDefaultHelpScreen ¶ added in v1.6.0
func WithNoDefaultHelpScreen(b bool) ExecOption
WithNoDefaultHelpScreen true to disable printing help screen if without any arguments
func WithNoEnvOverrides ¶ added in v1.6.3
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 ¶ added in v1.5.0
func WithNoLoadConfigFiles(b bool) ExecOption
WithNoLoadConfigFiles true means no loading config files
func WithNoWatchConfigFiles ¶ added in v1.6.9
func WithNoWatchConfigFiles(b bool) ExecOption
WithNoWatchConfigFiles true means no watching the config files
func WithOnPassThruCharHit ¶ added in v1.6.18
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 ¶ added in v1.6.18
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 ¶ added in v1.6.12
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 ¶ added in v1.6.12
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 ¶ added in v1.5.0
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 WithPredefinedLocations ¶ added in v1.5.0
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 ¶ added in v1.5.0
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 ¶ added in v1.5.5
func WithSimilarThreshold(similiarThreshold float64) ExecOption
WithSimilarThreshold defines a threshold for command/option similar detector. Default threshold is 0.6666666666666666. See also JaroWinklerDistance
func WithStrictMode ¶ added in v1.6.3
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 ¶ added in v1.6.13
func WithUnhandledErrorHandler(handler UnhandledErrorHandler) ExecOption
WithUnhandledErrorHandler handle the panics or exceptions generally
func WithUnknownOptionHandler ¶ added in v1.5.5
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 ¶ added in v1.6.9
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 ¶ added in v1.5.0
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 ¶ added in v1.5.0
type ExecWorker struct {
// contains filtered or unexported fields
}
ExecWorker is a core logic worker and holder
func (*ExecWorker) AddOnAfterXrefBuilt ¶ added in v1.5.0
func (w *ExecWorker) AddOnAfterXrefBuilt(cb HookFunc)
AddOnAfterXrefBuilt add hook func daemon plugin needed
func (*ExecWorker) AddOnBeforeXrefBuilding ¶ added in v1.5.0
func (w *ExecWorker) AddOnBeforeXrefBuilding(cb HookFunc)
AddOnBeforeXrefBuilding add hook func daemon plugin needed
func (*ExecWorker) InternalExecFor ¶ added in v1.5.0
func (w *ExecWorker) InternalExecFor(rootCmd *RootCommand, args []string) (last *Command, err error)
InternalExecFor is an internal helper, esp for debugging
type Flag ¶
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 ¶ added in v0.2.17
FindFlag find flag with `longName` from `cmd` if cmd == nil: finding from root command
func FindFlagRecursive ¶ added in v0.2.17
FindFlagRecursive find flag with `longName` from `cmd` recursively if cmd == nil: finding from root command
func (*Flag) GetDescZsh ¶ added in v0.2.13
GetDescZsh temp
func (*Flag) GetTitleFlagNames ¶ added in v0.2.13
GetTitleFlagNames temp
func (*Flag) GetTitleFlagNamesBy ¶ added in v0.2.13
GetTitleFlagNamesBy temp
func (*Flag) GetTitleFlagNamesByMax ¶ added in v0.2.13
GetTitleFlagNamesByMax temp
func (*Flag) GetTitleZshFlagName ¶ added in v0.2.13
GetTitleZshFlagName temp
func (*Flag) GetTitleZshFlagNames ¶ added in v0.2.13
GetTitleZshFlagNames temp
func (*Flag) GetTitleZshFlagNamesArray ¶ added in v0.2.13
GetTitleZshFlagNamesArray temp
func (*Flag) GetTriggeredTimes ¶ added in v1.5.1
GetTriggeredTimes returns the matched times
type HookFunc ¶ added in v1.5.1
type HookFunc func(root *RootCommand, args []string)
HookFunc the hook function prototype for SetBeforeXrefBuilding and SetAfterXrefBuilt
type HookOptsFunc ¶ added in v1.5.1
type HookOptsFunc func(root *RootCommand, opts *Options)
HookOptsFunc the hook function prototype
type OnSet ¶ added in v1.6.8
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 ¶ added in v0.2.15
type OptCmd interface { Titles(short, long string, aliases ...string) (opt OptCmd) Short(short string) (opt OptCmd) Long(long string) (opt OptCmd) Aliases(ss ...string) (opt OptCmd) Description(oneLine, 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 func(cmd *Command, args []string) (err error)) (opt OptCmd) // PreAction will be invoked before running Action // NOTE that RootCommand.PreAction will be invoked too. PreAction(pre func(cmd *Command, args []string) (err error)) (opt OptCmd) // PostAction will be invoked after run Action // NOTE that RootCommand.PostAction will be invoked too. PostAction(post func(cmd *Command, args []string)) (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. NewFlagV(defaultValue interface{}) (opt OptFlag) NewSubCommand() (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 NewCmdFrom ¶ added in v0.2.17
NewCmdFrom for fluent api
type OptFlag ¶ added in v0.2.15
type OptFlag interface { Titles(short, long 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 func(cmd *Command, args []string) (err error)) (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 NewDuration ¶ added in v0.2.17
NewDuration for fluent api
func NewDurationFrom ¶ added in v1.0.3
NewDurationFrom for fluent api
func NewFloat32 ¶ added in v1.0.1
NewFloat32 for fluent api
func NewFloat64 ¶ added in v1.0.1
NewFloat64 for fluent api
func NewIntSlice ¶ added in v0.2.17
NewIntSlice for fluent api
func NewStringSlice ¶ added in v0.2.17
NewStringSlice for fluent api
type OptFlagType ¶ added in v0.2.15
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 // OptFlagTypeString to create a new string flag OptFlagTypeString OptFlagType = iota + 5 // OptFlagTypeStringSlice to create a new string slice flag OptFlagTypeStringSlice OptFlagType = iota + 6 // OptFlagTypeIntSlice to create a new int slice flag OptFlagTypeIntSlice OptFlagType = iota + 7 // OptFlagTypeFloat32 to create a new int float32 flag OptFlagTypeFloat32 OptFlagType = iota + 8 // OptFlagTypeFloat64 to create a new int float64 flag OptFlagTypeFloat64 OptFlagType = iota + 9 // OptFlagTypeDuration to create a new duration flag OptFlagTypeDuration OptFlagType = iota + 10 )
type Options ¶
type Options struct {
// contains filtered or unexported fields
}
Options is a holder of all options
func GetOptions ¶ added in v1.5.0
func GetOptions() *Options
GetOptions returns the global options instance (rxxtOptions), ie. cmdr Options Store
func (*Options) DumpAsString ¶
DumpAsString for debugging.
func (*Options) Get ¶
Get an `Option` by key string, eg: ```golang cmdr.Get("app.logger.level") => 'DEBUG',... ```
func (*Options) GetDuration ¶ added in v0.2.11
GetDuration returns the time duration value of an `Option` key.
func (*Options) GetFloat32Ex ¶ added in v1.6.3
GetFloat32Ex returns the float32 value of an `Option` key.
func (*Options) GetFloat64Ex ¶ added in v1.6.3
GetFloat64Ex returns the float64 value of an `Option` key.
func (*Options) GetHierarchyList ¶ added in v0.2.17
GetHierarchyList returns the hierarchy data for dumping
func (*Options) GetInt64Ex ¶ added in v1.6.3
GetInt64Ex returns the int64 value of an `Option` key.
func (*Options) GetInt64Slice ¶ added in v1.5.5
GetInt64Slice returns the string slice value of an `Option` key.
func (*Options) GetIntSlice ¶ added in v0.2.11
GetIntSlice returns the string slice value of an `Option` key.
func (*Options) GetMap ¶ added in v1.0.0
GetMap an `Option` by key string, it returns a hierarchy map or nil
func (*Options) GetStringNoExpand ¶ added in v1.6.7
GetStringNoExpand returns the string value of an `Option` key.
func (*Options) GetStringSlice ¶
GetStringSlice returns the string slice value of an `Option` key.
func (*Options) GetUint64Ex ¶ added in v1.6.3
GetUint64Ex returns the uint64 value of an `Option` key.
func (*Options) GetUint64Slice ¶ added in v1.5.5
GetUint64Slice returns the string slice value of an `Option` key.
func (*Options) LoadConfigFile ¶
LoadConfigFile loads a yaml config file and merge the settings into `rxxtOptions` and load files in the `conf.d` child directory too.
func (*Options) Reset ¶
func (s *Options) Reset()
Reset the exists `Options`, so that you could follow a `LoadConfigFile()` with it.
type Painter ¶ added in v0.2.9
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, defValStr string) Flush() Results() []byte // clear any internal states and reset itself Reset() }
Painter to support the genManual, genMarkdown, printHelpScreen.
type RootCmdOpt ¶ added in v0.2.15
type RootCmdOpt struct {
// contains filtered or unexported fields
}
RootCmdOpt for fluent api
func Root ¶ added in v0.2.15
func Root(appName, version string) (opt *RootCmdOpt)
Root for fluent api, to create a new *RootCmdOpt object.
func RootFrom ¶ added in v1.0.3
func RootFrom(root *RootCommand) (opt *RootCmdOpt)
RootFrom for fluent api, to create the new *RootCmdOpt object from an existed RootCommand
func (*RootCmdOpt) AddCommand ¶ added in v1.6.7
func (s *RootCmdOpt) AddCommand(cmd *Command)
func (*RootCmdOpt) AddOptFlag ¶ added in v1.6.7
func (s *RootCmdOpt) AddOptFlag(flag OptFlag)
func (*RootCmdOpt) AttachToCommand ¶ added in v1.6.7
func (s *RootCmdOpt) AttachToCommand(cmd *Command)
func (*RootCmdOpt) AttachToRoot ¶ added in v1.6.7
func (s *RootCmdOpt) AttachToRoot(root *RootCommand)
func (*RootCmdOpt) Copyright ¶ added in v0.2.15
func (s *RootCmdOpt) Copyright(copyright, author string) *RootCmdOpt
Copyright for fluent api
func (*RootCmdOpt) Deprecated ¶ added in v0.2.15
func (*RootCmdOpt) Description ¶ added in v0.2.15
func (*RootCmdOpt) Header ¶ added in v0.2.15
func (s *RootCmdOpt) Header(header string) *RootCmdOpt
Header for fluent api
func (*RootCmdOpt) NewFlag ¶ added in v0.2.15
func (s *RootCmdOpt) NewFlag(typ OptFlagType) (opt OptFlag)
func (*RootCmdOpt) NewFlagV ¶ added in v1.6.8
func (s *RootCmdOpt) NewFlagV(defaultValue interface{}) (opt OptFlag)
func (*RootCmdOpt) NewSubCommand ¶ added in v0.2.15
func (s *RootCmdOpt) NewSubCommand() (opt OptCmd)
func (*RootCmdOpt) OwnerCommand ¶ added in v0.2.15
func (s *RootCmdOpt) OwnerCommand() (opt OptCmd)
func (*RootCmdOpt) PostAction ¶ added in v0.2.15
func (*RootCmdOpt) RootCommand ¶ added in v0.2.15
func (s *RootCmdOpt) RootCommand() (root *RootCommand)
func (*RootCmdOpt) StringSlice ¶ added in v0.2.15
func (s *RootCmdOpt) StringSlice() (opt OptFlag)
func (*RootCmdOpt) TailPlaceholder ¶ added in v0.2.15
type RootCommand ¶
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. // contains filtered or unexported fields }
RootCommand holds some application information
type StringDistance ¶ added in v1.1.3
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 ¶ added in v1.1.3
func JaroWinklerDistance(opts ...DistanceOption) StringDistance
JaroWinklerDistance returns an calculator for two strings distance metric, with Jaro-Winkler algorithm.
type UnhandledErrorHandler ¶ added in v1.6.13
type UnhandledErrorHandler func(err interface{})
UnhandledErrorHandler for WithUnhandledErrorHandler
Source Files ¶
- base_opt.go
- build_xref.go
- clone.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
- 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
- sc_wrap.go
- term_wrap.go
- tool.go
- types.go
- walk.go
- whitespaces.go