From 9a4f8023d8aae9a10bc5b85a48ccf733aa87771f Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Thu, 25 May 2023 15:07:06 -0700 Subject: [PATCH] add mgconfig conversion to lib --- cmd/mg/main.go | 39 ++++++++++++++++++++++++++++++++++++++ cmd/{ => paths}/mrpaths.go | 0 parse/mgconf.go | 24 +++++++++++++++++++++++ parse/myrepos.go | 14 ++++++++++++++ 4 files changed, 77 insertions(+) create mode 100644 cmd/mg/main.go rename cmd/{ => paths}/mrpaths.go (100%) diff --git a/cmd/mg/main.go b/cmd/mg/main.go new file mode 100644 index 0000000..65f9777 --- /dev/null +++ b/cmd/mg/main.go @@ -0,0 +1,39 @@ +package main + +import ( + "flag" + "log" + "os" + + "github.com/taigrr/mg/parse" +) + +var jobs = flag.Int("j", 1, "number of jobs to run in parallel") + +func main() { + flag.Parse() + conf, err := parse.LoadMGConfig() + if err != nil { + if os.IsNotExist(err) { + // Try to load mr config instead + mrconf, err := parse.LoadMRConfig() + if err != nil { + log.Println(err) + os.Exit(1) + } + + conf = mrconf.ToMGConfig() + log.Println("migrated mrconfig to mgconfig") + err = conf.Save() + if err != nil { + log.Println(err) + os.Exit(1) + } + } + } + + // fmt.Println(conf) +} + +func Register() { +} diff --git a/cmd/mrpaths.go b/cmd/paths/mrpaths.go similarity index 100% rename from cmd/mrpaths.go rename to cmd/paths/mrpaths.go diff --git a/parse/mgconf.go b/parse/mgconf.go index 3654987..7f79ddc 100644 --- a/parse/mgconf.go +++ b/parse/mgconf.go @@ -2,6 +2,7 @@ package parse import ( "encoding/json" + "io/ioutil" "os" "path/filepath" ) @@ -54,3 +55,26 @@ func LoadMGConfig() (MGConfig, error) { return config, err } + +func (m MGConfig) Save() error { + mgConf := os.Getenv("MGCONFIG") + if mgConf == "" { + confDir := os.Getenv("XDG_CONFIG_HOME") + if confDir == "" { + home, err := os.UserHomeDir() + if err != nil { + return err + } + confDir = filepath.Join(home, ".config") + if _, err := os.Stat(confDir); err != nil { + return err + } + } + mgConf = filepath.Join(confDir, "mgconfig") + } + b, err := json.MarshalIndent(m, "", " ") + if err != nil { + return err + } + return ioutil.WriteFile(mgConf, b, 0o644) +} diff --git a/parse/myrepos.go b/parse/myrepos.go index 7e649e1..3790079 100644 --- a/parse/myrepos.go +++ b/parse/myrepos.go @@ -29,6 +29,20 @@ func (m MRConfig) GetRepoPaths() []string { return paths } +func (m MRConfig) ToMGConfig() MGConfig { + mgconf := MGConfig{ + Repos: []Repo{}, + Aliases: m.Aliases, + } + for _, r := range m.Repos { + mgconf.Repos = append(mgconf.Repos, Repo{ + Path: r.Path, + Aliases: r.Aliases, + }) + } + return mgconf +} + // LoadMRConfig loads the mrconfig file from the user's home directory // and returns a MRConfig struct // TODO: load aliases into map instead of hardcoded Unregister prop