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 ¶
- func AddTimeParserFormats(f ...string)
- func Args() []string
- func AutoEnv(enable bool)
- func Parse(config interface{}) error
- func ParseAndValidate(config interface{}) error
- func SetVariableDefaults(defaults map[string]string)
- func Usage()
- func VarDefaultsFromYAML(in []byte) map[string]string
- func VarDefaultsFromYAMLFile(filename string) map[string]string
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddTimeParserFormats ¶
func AddTimeParserFormats(f ...string)
AddTimeParserFormats adds custom formats to parse time.Time fields
func AutoEnv ¶
func AutoEnv(enable bool)
AutoEnv enables or disables automated env variable guessing. If no `env` struct tag was set and AutoEnv is enabled the env variable name is derived from the name of the field: `MyFieldName` will get `MY_FIELD_NAME`
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 ParseAndValidate ¶ added in v1.2.0
func ParseAndValidate(config interface{}) error
ParseAndValidate works exactly like Parse but implements an additional run of the go-validator package on the configuration struct. Therefore additonal struct tags are supported like described in the readme file of the go-validator package:
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.