Documentation ¶
Index ¶
- Variables
- func GetConfigBase(in config.Opts, appName string, abs bool)
- type Command
- func (c *Command) Foreach(cl func(*Command, int) bool, hereDepth, hereDist int, cmd *Command) (ocl func(*Command, int) bool, depth, dist int, cm *Command)
- func (c *Command) GetEnvs(path ...string) (envs Envs)
- func (c *Command) GetOpt(path Path) (o config.Option)
- func (c *Command) MarshalText() (text []byte, err error)
- func (c *Command) ParseCLIArgs(args []string) (run *Command, err error)
- func (c *Command) UnmarshalText(t []byte) (err error)
- type Commands
- type Entries
- type Entry
- type Env
- type Envs
- type Op
- type Path
Constants ¶
This section is empty.
Variables ¶
var NoOp = func(c interface{}) error { return nil }
var Tags = func(s ...string) []string {
return s
}
Functions ¶
func GetConfigBase ¶
GetConfigBase creates an option set that should go in the root of a Command specification for an application, providing a data directory path and config file path.
This exists in order to simplify setup for application configuration persistence.
Types ¶
type Command ¶
type Command struct { Name string Description string Documentation string Entrypoint Op Parent *Command Commands Commands Configs config.Opts Default []string // specifies default subcommand to execute sync.Mutex }
Command is a specification for a command and can include any number of subcommands, and for each Command a list of options
func Cmd ¶
func Cmd(name, desc, doc string, op Op, cfg map[string]config.Option, cmds ...*Command) (c *Command)
Cmd is a convenience function but probably unnecessary when named field sparse struct literals are just as convenient.
func (*Command) Foreach ¶
func (c *Command) Foreach(cl func(*Command, int) bool, hereDepth, hereDist int, cmd *Command) (ocl func(*Command, int) bool, depth, dist int, cm *Command)
Foreach runs a closure on every node in the Commands tree, stopping if the closure returns false
func (*Command) GetEnvs ¶
GetEnvs walks a Command tree and returns a slice containing all environment variable names and the related config.Option.
func (*Command) MarshalText ¶
func (*Command) ParseCLIArgs ¶
ParseCLIArgs reads a command line argument slice (presumably from os.Args), identifies the command to run and
Rules for constructing CLI args:
- Commands are identified by name, and must appear in their hierarchic order to invoke subcommands. They are matched as normalised to lower case.
- Options can be preceded by "--" or "-", and the full name, or the alias, normalised to lower case for matching, and if there is an "=" after it, the value is after this, otherwise, the next element in the args is the value, except booleans, which default to true unless set to false. For these, the prefix "no" or similar indicates the semantics of the true value.
- Options only match when preceded by their relevant Command, except for the root Command, and these options must precede any other command options.
- If no command is selected, the root Command.Default is selected. This can optionally be used for subcommands as well, though it is unlikely needed, if found, the Default of the tip of the Command branch selected by the CLI if there is one, otherwise the Command itself.