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)
|
|
}
|