Documentation
¶
Overview ¶
Package rconfig implements a CLI configuration reader with struct-embedded defaults, environment variables and posix compatible flag parsing using the pflag library.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Parse ¶
func Parse(config interface{}) error
Parse takes the pointer to a struct filled with variables which should be read from ENV, default or flag. The precedence in this is flag > ENV > default. So if a flag is specified on the CLI it will overwrite the ENV and otherwise ENV overwrites the default specified.
For your configuration struct you can use the following struct-tags to control the behavior of rconfig:
default: Set a default value vardefault: Read the default value from the variable defaults env: Read the value from this environment variable flag: Flag to read in format "long,short" (for example "listen,l") description: A help text for Usage output to guide your users
The format you need to specify those values you can see in the example to this function.
Example ¶
// We're building an example configuration with a sub-struct to be filled
// by the Parse command.
config := struct {
Username string `default:"unknown" flag:"user,u" description:"Your name"`
Details struct {
Age int `default:"25" flag:"age" description:"Your age"`
}
}{}
// To have more relieable results we're setting os.Args to a known value.
// In real-life use cases you wouldn't do this but parse the original
// commandline arguments.
os.Args = []string{
"example",
"--user=Luzifer",
}
Parse(&config)
fmt.Printf("Hello %s, happy birthday for your %dth birthday.",
config.Username,
config.Details.Age)
// You can also show an usage message for your user
Usage()
Output: Hello Luzifer, happy birthday for your 25th birthday.
func SetVariableDefaults ¶
SetVariableDefaults presets the parser with a map of default values to be used when specifying the vardefault tag
func Usage ¶
func Usage()
Usage prints a basic usage with the corresponding defaults for the flags to os.Stdout. The defaults are derived from the `default` struct-tag and the ENV.
func VarDefaultsFromYAML ¶
VarDefaultsFromYAML creates a vardefaults map from YAML raw data
func VarDefaultsFromYAMLFile ¶
VarDefaultsFromYAMLFile reads contents of a file and calls VarDefaultsFromYAML
Types ¶
This section is empty.