You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
conflag is a drop-in replacement for Go's standard flag package with config file support.
Usage
Your code:
package main
import (
"fmt""github.com/nadoo/conflag"
)
varconfstruct {
NamestringAgeintMalebool
}
funcmain() {
// get a new conflag instanceflag:=conflag.New()
// setup flags as the standard flag packageflag.StringVar(&conf.Name, "name", "", "your name")
flag.IntVar(&conf.Age, "age", 0, "your age")
flag.BoolVar(&conf.Male, "male", false, "your sex")
// parse before access flagsflag.Parse()
// now you're able to get the parsed flag valuesfmt.Printf(" Name: %s\n", conf.Name)
fmt.Printf(" Age: %d\n", conf.Age)
fmt.Printf(" Male: %v\n", conf.Male)
}
Run without config file:
command:
example -name Jay -age 30
output:
Name: Jay
Age: 30
Male: false
Run with config file and environment variable(-config):
example.conf:
name={$NAME}
age=20
male
command: use "-config" flag to specify the config file path.
NAME=Jason example -config example.conf
output:
Name: Jason
Age: 20
Male: true
Run with config file and OVERRIDE a flag value using commandline:
example.conf:
name=Jason
age=20
male
command:
example -config example.conf -name Michael
output:
Name: Michael
Age: 20
Male: true
Config File
format: KEY=VALUE
just use the command line flag name as key name:
## config file# comment line starts with "#"# format:#KEY=VALUE, # just use the command line flag name as key name# use {$ENV_VAR_NAME} in VALUE to get the Environment Variable value# your name
name={$NAME}
# your age
age=20
# are you male?
male=true
# use include to include more config files
include=part1.inc.conf
include=part2.inc.conf