package main
import (
"log"
"github.com/catamat/config"
)
type configJSON struct {
Word string `json:"word"`
Number int `json:"number"`
Check bool `json:"check"`
Slice []int `json:"myslice"`
}
type configEnv struct {
TmpDir string `env:"TMPDIR"`
HOME string
Shell string `env:"SHELL"`
User string `env:"USER"`
GoRoot string `env:"GOROOT"`
CgoCflags string `env:"CGO_CFLAGS"`
VscodePid int `env:"VSCODE_PID"`
PipeLogging bool `env:"PIPE_LOGGING"`
Slice []int `env:"MY_SLICE" vsep:":"`
}
type configFlags struct {
Word string `flag:"-word"`
Number int `flag:"-number"`
Check bool `flag:"-check"`
Slice []int `flag:"-myslice" vsep:","`
}
func main() {
/*
{
"word": "TestWord",
"number": 123456,
"check": true,
"myslice": [1,1,2,3,5,8]
}
*/
log.Println("JSON:")
cfg1 := configJSON{}
config.FromJSON(&cfg1, "config.json")
log.Println(cfg1)
/*
os.Setenv("MY_SLICE", "111:222:333")
*/
log.Println("Env:")
cfg2 := configEnv{}
config.FromEnv(&cfg2)
log.Println(cfg2)
/*
./example -word=TestWord -number=123456 -check=true -myslice=1,1,2,3,5,8
*/
log.Println("Flags:")
cfg3 := configFlags{}
config.FromFlags(&cfg3)
log.Println(cfg3)
}