package main import ( "log" "flag" "os" "path/filepath" "github.com/BurntSushi/toml" ) type Config struct { Database DatabaseConfig } type DatabaseConfig struct { Type string } var ConfigFolder string var ConfigFilename string var Configuration Config func init() { const baseFolder string = "jdr" dir, varSet := os.LookupEnv("XDG_CONFIG_HOME") if varSet { ConfigFolder = filepath.Join(dir, baseFolder) } else { dir, varSet = os.LookupEnv("HOME") if !varSet { log.Fatal("Cannot find a config folder") } ConfigFolder = filepath.Join(dir, "." + baseFolder) } } func ParseArguments() { log.Println("Parsing arguments") flag.StringVar(&ConfigFilename, "config", filepath.Join(ConfigFolder, "config.toml"), "configuration file") flag.Parse() } func LoadConfig() { configFilename, err := filepath.Abs(ConfigFilename) if err != nil { log.Fatal(err) } log.Println("Loading config from", configFilename) _, err = toml.DecodeFile(configFilename, &Configuration) if err != nil { log.Fatal(err) } log.Println(Configuration.Database.Type) }