diff options
Diffstat (limited to 'config.go')
| -rw-r--r-- | config.go | 23 |
1 files changed, 16 insertions, 7 deletions
@@ -14,6 +14,15 @@ import ( // writes out the cluster information it seperate files // to make it humanly possible to hand edit things as needed func (m *Repos) ConfigSave() error { + if os.Getenv("FORGE_HOME") == "" { + homeDir, _ := os.UserHomeDir() + fullpath := filepath.Join(homeDir, ".config/forge") + os.Setenv("FORGE_HOME", fullpath) + } + // try to backup the current cluster config files + if err := backupConfig(); err != nil { + return err + } data, err := m.Marshal() if err != nil { log.Info("proto.Marshal() failed len", len(data), err) @@ -24,6 +33,9 @@ func (m *Repos) ConfigSave() error { s := m.FormatTEXT() configWrite("forge.text", []byte(s)) + + s = m.FormatJSON() + configWrite("forge.json", []byte(s)) return nil } @@ -76,9 +88,7 @@ func (m *Repos) ConfigLoad() error { } func loadFile(filename string) ([]byte, error) { - homeDir, err := os.UserHomeDir() - p := filepath.Join(homeDir, ".config/forge") - fullname := filepath.Join(p, filename) + fullname := filepath.Join(os.Getenv("FORGE_HOME"), filename) data, err := os.ReadFile(fullname) if errors.Is(err, os.ErrNotExist) { // if file does not exist, just return nil. this @@ -94,10 +104,9 @@ func loadFile(filename string) ([]byte, error) { } func configWrite(filename string, data []byte) error { - homeDir, err := os.UserHomeDir() - p := filepath.Join(homeDir, ".config/forge") - fname := filepath.Join(p, filename) - cfgfile, err := os.OpenFile(fname, os.O_RDWR|os.O_CREATE, 0666) + fullname := filepath.Join(os.Getenv("FORGE_HOME"), filename) + + cfgfile, err := os.OpenFile(fullname, os.O_RDWR|os.O_CREATE, 0666) defer cfgfile.Close() if err != nil { log.Warn("open config file :", err) |
