clibase
packageThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
Documentation¶
Overview¶
Package clibase offers an all-in-one solution for a highly configurable CLIapplication. Within Coder, we use it for all of our subcommands, whichdemands more functionality than cobra/viber offers.
The Command interface is loosely based on the chi middleware pattern andhttp.Handler/HandlerFunc.
Index¶
- Variables
- type Annotations
- type Bool
- type Cmd
- type Duration
- type Enum
- type EnvVar
- type Environ
- type Group
- type HandlerFunc
- type HostPort
- func (hp *HostPort) MarshalJSON() ([]byte, error)
- func (hp *HostPort) MarshalYAML() (interface{}, error)
- func (hp *HostPort) Set(v string) error
- func (hp *HostPort) String() string
- func (*HostPort) Type() string
- func (hp *HostPort) UnmarshalJSON(b []byte) error
- func (hp *HostPort) UnmarshalYAML(n *yaml.Node) error
- type Int64
- type Invocation
- type MiddlewareFunc
- type NoOptDefValuer
- type Option
- type OptionSet
- func (s *OptionSet) Add(opts ...Option)
- func (s *OptionSet) ByName(name string) *Option
- func (s OptionSet) Filter(filter func(opt Option) bool) OptionSet
- func (s *OptionSet) FlagSet() *pflag.FlagSet
- func (s *OptionSet) MarshalYAML() (any, error)
- func (s *OptionSet) ParseEnv(vs []EnvVar) error
- func (s *OptionSet) SetDefaults() error
- func (s *OptionSet) UnmarshalYAML(rootNode *yaml.Node) error
- type RunCommandError
- type String
- type StringArray
- type Struct
- func (s *Struct[T]) MarshalJSON() ([]byte, error)
- func (s *Struct[T]) MarshalYAML() (interface{}, error)
- func (s *Struct[T]) Set(v string) error
- func (s *Struct[T]) String() string
- func (s *Struct[T]) Type() string
- func (s *Struct[T]) UnmarshalJSON(b []byte) error
- func (s *Struct[T]) UnmarshalYAML(n *yaml.Node) error
- type URL
- type Validator
- type ValueSource
- type YAMLConfigPath
Constants¶
This section is empty.
Variables¶
var DiscardValue discardValue
DiscardValue does nothing but implements the pflag.Value interface.It's useful in cases where you want to accept an option, but access theunderlying value directly instead of through the Option methods.
Functions¶
This section is empty.
Types¶
typeAnnotations¶
Annotations is an arbitrary key-mapping used to extend the Option and Command types.Its methods won't panic if the map is nil.
func (Annotations)Get¶
func (aAnnotations) Get(keystring) (string,bool)
Get retrieves a key from the map, returning false if the key is not foundor the map is nil.
func (Annotations)IsSet¶
func (aAnnotations) IsSet(keystring)bool
IsSet returns true if the key is set in the annotations map.
func (Annotations)Mark¶
func (aAnnotations) Mark(keystring, valuestring)Annotations
Mark sets a value on the annotations map, creating oneif it doesn't exist. Mark does not mutate the original andreturns a copy. It is suitable for chaining.
typeCmd¶
type Cmd struct {// Parent is the direct parent of the command.Parent *Cmd// Children is a list of direct descendants.Children []*Cmd// Use is provided in form "command [flags] [args...]".Usestring// Aliases is a list of alternative names for the command.Aliases []string// Short is a one-line description of the command.Shortstring// Hidden determines whether the command should be hidden from help.Hiddenbool// RawArgs determines whether the command should receive unparsed arguments.// No flags are parsed when set, and the command is responsible for parsing// its own flags.RawArgsbool// Long is a detailed description of the command,// presented on its help page. It may contain examples.LongstringOptionsOptionSetAnnotationsAnnotations// Middleware is called before the Handler.// Use Chain() to combine multiple middlewares.MiddlewareMiddlewareFuncHandlerHandlerFuncHelpHandlerHandlerFunc}
Cmd describes an executable command.
func (*Cmd)AddSubcommands¶added inv0.21.0
AddSubcommands adds the given subcommands, setting theirParent field automatically.
func (*Cmd)FullName¶
FullName returns the full invocation name of the command,as seen on the command line.
func (*Cmd)FullOptions¶added inv0.23.6
FullOptions returns the options of the command and its parents.
func (*Cmd)Invoke¶added inv0.20.0
func (c *Cmd) Invoke(args ...string) *Invocation
Invoke creates a new invocation of the command, withstdio discarded.
The returned invocation is not live until Run() is called.
func (*Cmd)PrepareAll¶added inv0.21.0
PrepareAll performs initialization and linting on the command and all its children.
typeDuration¶
funcDurationOf¶added inv0.20.0
func (*Duration)MarshalYAML¶added inv0.22.1
func (*Duration)UnmarshalYAML¶added inv0.22.1
typeEnviron¶added inv0.20.0
type Environ []EnvVar
funcParseEnviron¶added inv0.20.0
ParseEnviron returns all environment variables starting withprefix without said prefix.
typeGroup¶
type Group struct {Parent *Group `json:"parent,omitempty"`Namestring `json:"name,omitempty"`YAMLstring `json:"yaml,omitempty"`Descriptionstring `json:"description,omitempty"`}
Group describes a hierarchy of groups that an option or command belongs to.
typeHandlerFunc¶added inv0.20.0
type HandlerFunc func(i *Invocation)error
HandlerFunc handles an Invocation of a command.
typeHostPort¶
HostPort is a host:port pair.
func (*HostPort)MarshalJSON¶
func (*HostPort)MarshalYAML¶added inv0.22.1
func (*HostPort)UnmarshalJSON¶
func (*HostPort)UnmarshalYAML¶added inv0.22.1
typeInvocation¶added inv0.20.0
type Invocation struct {Command *CmdArgs []string// Environ is a list of environment variables. Use EnvsWithPrefix to parse// os.Environ.EnvironEnvironStdoutio.WriterStderrio.WriterStdinio.Reader// contains filtered or unexported fields}
Invocation represents an instance of a command being executed.
func (*Invocation)Context¶added inv0.20.0
func (inv *Invocation) Context()context.Context
func (*Invocation)ParsedFlags¶added inv0.20.0
func (inv *Invocation) ParsedFlags() *pflag.FlagSet
func (*Invocation)Run¶added inv0.20.0
func (inv *Invocation) Run() (errerror)
Run executes the command.If two command share a flag name, the first command wins.
func (*Invocation)WithContext¶added inv0.20.0
func (inv *Invocation) WithContext(ctxcontext.Context) *Invocation
WithContext returns a copy of the Invocation with the given context.
func (*Invocation)WithOS¶added inv0.20.0
func (inv *Invocation) WithOS() *Invocation
WithOS returns the invocation as a main package, filling in the invocation's unsetfields with OS defaults.
typeMiddlewareFunc¶added inv0.20.0
type MiddlewareFunc func(nextHandlerFunc)HandlerFunc
MiddlewareFunc returns the next handler in the chain,or nil if there are no more.
funcChain¶added inv0.20.0
func Chain(ms ...MiddlewareFunc)MiddlewareFunc
Chain returns a Handler that first calls middleware in order.
funcRequireNArgs¶added inv0.20.0
func RequireNArgs(wantint)MiddlewareFunc
funcRequireRangeArgs¶added inv0.20.0
func RequireRangeArgs(start, endint)MiddlewareFunc
RequireRangeArgs returns a Middleware that requires the number of argumentsto be between start and end (inclusive). If end is -1, then the number ofarguments must be at least start.
typeNoOptDefValuer¶
type NoOptDefValuer interface {NoOptDefValue()string}
NoOptDefValuer describes behavior when nooption is passed into the flag.
This is useful for boolean or otherwise binary flags.
typeOption¶
type Option struct {Namestring `json:"name,omitempty"`Descriptionstring `json:"description,omitempty"`// Required means this value must be set by some means. It requires// `ValueSource != ValueSourceNone`// If `Default` is set, then `Required` is ignored.Requiredbool `json:"required,omitempty"`// Flag is the long name of the flag used to configure this option. If unset,// flag configuring is disabled.Flagstring `json:"flag,omitempty"`// FlagShorthand is the one-character shorthand for the flag. If unset, no// shorthand is used.FlagShorthandstring `json:"flag_shorthand,omitempty"`// Env is the environment variable used to configure this option. If unset,// environment configuring is disabled.Envstring `json:"env,omitempty"`// YAML is the YAML key used to configure this option. If unset, YAML// configuring is disabled.YAMLstring `json:"yaml,omitempty"`// Default is parsed into Value if set.Defaultstring `json:"default,omitempty"`// Value includes the types listed in values.go.Valuepflag.Value `json:"value,omitempty"`// Annotations enable extensions to clibase higher up in the stack. It's useful for// help formatting and documentation generation.AnnotationsAnnotations `json:"annotations,omitempty"`// Group is a group hierarchy that helps organize this option in help, configs// and other documentation.Group *Group `json:"group,omitempty"`// UseInstead is a list of options that should be used instead of this one.// The field is used to generate a deprecation warning.UseInstead []Option `json:"use_instead,omitempty"`Hiddenbool `json:"hidden,omitempty"`ValueSourceValueSource `json:"value_source,omitempty"`}
Option is a configuration option for a CLI application.
typeOptionSet¶
type OptionSet []Option
OptionSet is a group of options that can be applied to a command.
func (*OptionSet)ByName¶added inv0.22.1
ByName returns the Option with the given name, or nil if no such optionexists.
func (OptionSet)Filter¶added inv0.23.0
Filter will only return options that match the given filter. (return true)
func (*OptionSet)MarshalYAML¶added inv0.22.1
MarshalYAML converts the option set to a YAML node, that can beconverted into bytes via yaml.Marshal.
The node is returned to enable post-processing higher up inthe stack.
It is isomorphic with FromYAML.
func (*OptionSet)ParseEnv¶
ParseEnv parses the given environment variables into the OptionSet.Use EnvsWithPrefix to filter out prefixes.
func (*OptionSet)SetDefaults¶
SetDefaults sets the default values for each Option, skipping valuesthat already have a value source.
func (*OptionSet)UnmarshalYAML¶added inv0.22.1
UnmarshalYAML converts the given YAML node into the option set.It is isomorphic with ToYAML.
typeRunCommandError¶added inv0.21.0
func (*RunCommandError)Error¶added inv0.21.0
func (e *RunCommandError) Error()string
func (*RunCommandError)Unwrap¶added inv0.21.0
func (e *RunCommandError) Unwrap()error
typeStringArray¶added inv0.21.0
type StringArray []string
StringArray is a slice of strings that implements pflag.Value and pflag.SliceValue.
funcStringArrayOf¶added inv0.21.0
func StringArrayOf(ss *[]string) *StringArray
func (*StringArray)Append¶added inv0.21.0
func (s *StringArray) Append(vstring)error
func (*StringArray)GetSlice¶added inv0.21.0
func (s *StringArray) GetSlice() []string
func (*StringArray)Replace¶added inv0.21.0
func (s *StringArray) Replace(vals []string)error
func (*StringArray)Set¶added inv0.21.0
func (s *StringArray) Set(vstring)error
func (StringArray)String¶added inv0.21.0
func (sStringArray) String()string
func (StringArray)Type¶added inv0.21.0
func (StringArray) Type()string
func (StringArray)Value¶added inv0.21.0
func (sStringArray) Value() []string
typeStruct¶
type Struct[Tany] struct {Value T}
Struct is a special value type that encodes an arbitrary struct.It implements the flag.Value interface, but in general these values shouldonly be accepted via config for ergonomics.
The string encoding type is YAML.
func (*Struct[T])MarshalJSON¶
func (*Struct[T])MarshalYAML¶
func (*Struct[T])UnmarshalJSON¶
func (*Struct[T])UnmarshalYAML¶
typeURL¶
func (*URL)MarshalJSON¶
func (*URL)MarshalYAML¶added inv0.22.1
func (*URL)UnmarshalJSON¶
func (*URL)UnmarshalYAML¶added inv0.22.1
typeValidator¶added inv0.26.1
Validator is a wrapper around a pflag.Value that allows for validationof the value after or before it has been set.
typeValueSource¶added inv0.22.1
type ValueSourcestring
const (ValueSourceNoneValueSource = ""ValueSourceFlagValueSource = "flag"ValueSourceEnvValueSource = "env"ValueSourceYAMLValueSource = "yaml"ValueSourceDefaultValueSource = "default")
typeYAMLConfigPath¶added inv0.22.1
type YAMLConfigPathstring
YAMLConfigPath is a special value type that encodes a path to a YAMLconfiguration file where options are read from.
func (*YAMLConfigPath)Set¶added inv0.22.1
func (p *YAMLConfigPath) Set(vstring)error
func (*YAMLConfigPath)String¶added inv0.22.1
func (p *YAMLConfigPath) String()string
func (*YAMLConfigPath)Type¶added inv0.22.1
func (*YAMLConfigPath) Type()string