You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

61 lines
1.1 KiB

package main
import (
"flag"
"log"
"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)
}