|
|
|
@ -0,0 +1,61 @@ |
|
|
|
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) |
|
|
|
} |