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 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.
Types ¶
This section is empty.