From 5929432d0845eef9d339869dc3bfa1dc9ea17679 Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Thu, 9 Mar 2023 16:28:07 -0800 Subject: [PATCH] add mgconf --- parse/mgconf.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 parse/mgconf.go diff --git a/parse/mgconf.go b/parse/mgconf.go new file mode 100644 index 0000000..a91433c --- /dev/null +++ b/parse/mgconf.go @@ -0,0 +1,46 @@ +package parse + +import ( + "encoding/json" + "os" + "path/filepath" +) + +type MGConfig struct { + Repos []Repo + Aliases map[string]string +} + +func (m MGConfig) GetRepoPaths() []string { + paths := []string{} + for _, r := range m.Repos { + paths = append(paths, r.Path) + } + return paths +} + +func LoadMGConfig() (MGConfig, error) { + var config MGConfig + mgConf := os.Getenv("MGCONFIG") + if mgConf == "" { + confDir := os.Getenv("XDG_CONFIG_HOME") + if confDir == "" { + home, err := os.UserHomeDir() + if err != nil { + return MGConfig{}, err + } + confDir = filepath.Join(home, ".config") + if _, err := os.Stat(confDir); err != nil { + return MGConfig{}, err + } + } + mgConf = filepath.Join(confDir, "mgconfig") + } + file, err := os.ReadFile(mgConf) + if err != nil { + return MGConfig{}, err + } + err = json.Unmarshal(file, &config) + + return config, err +}