diff options
| author | Jeff Carr <[email protected]> | 2025-09-11 02:20:06 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-09-11 02:20:06 -0500 |
| commit | 98467dec72f0a894b7a2fef319d73d3320d94d0f (patch) | |
| tree | 2bbd2f2fb9d50b413e716ca7030304f950c65194 /config.go | |
| parent | dbde2f51b8acb4043203b5592531c6715896c800 (diff) | |
using new config package
Diffstat (limited to 'config.go')
| -rw-r--r-- | config.go | 135 |
1 files changed, 2 insertions, 133 deletions
@@ -2,31 +2,16 @@ package forgepb -// functions to import and export the protobuf -// data to and from config files - import ( - "errors" - "fmt" - "os" - "path/filepath" "time" "go.wit.com/log" timestamppb "google.golang.org/protobuf/types/known/timestamppb" ) +// returns err1 || err2 func (f *Forge) ConfigSave() error { var err error - /* - // backup the current config files - if e := f.backupConfig(); e != nil { - log.Info("forge.BackupConfig() error", e) - err = e - // continue here? notsure. could be bad either way - // out of disk space? - } - */ if f.Config != nil { if e := f.Config.ConfigSave(); e != nil { log.Info("forge.Config.ConfigSave() error", e) @@ -34,6 +19,7 @@ func (f *Forge) ConfigSave() error { } } if f.Repos != nil { + // ??? if f.HasFullScan() { f.Repos.HasFullScan = true t := time.Now() @@ -46,120 +32,3 @@ func (f *Forge) ConfigSave() error { } return err } - -// write to ~/.config/forge/ -func (f *ForgeConfigs) ConfigSave() error { - data, err := f.Marshal() - if err != nil { - log.Info("proto.Marshal() failed len", len(data), err) - return err - } - // log.Info("forgepb.ConfigSave() proto.Marshal() worked len", len(data)) - - s := f.FormatTEXT() - configWrite("forge.text", []byte(s)) - - s = f.FormatJSON() - configWrite("forge.json", []byte(s)) - - return nil -} - -// load the ~/.config/forge/ files -func (c *ForgeConfigs) ConfigLoad(fullpath string) error { - // var data []byte - // var err error - if c == nil { - // can't safely do c = new(ForgeConfig) if c is in a struct from the caller. notsure why - // TODO: recheck this. it might work now? It's probably still a bad idea(?) - return errors.New("It's not safe to run ConfigLoad() on a nil") - } - - if err := c.loadText(); err == nil { - return nil - } - - // forge.text doesn't exist. try forge.json - // this lets the user hand edit the JSON config - // probably just deprecate this - if data, err := loadFile("forge.json"); err != nil { - if data != nil { - // this means the forge.json file exists and was read - if len(data) != 0 { - if err = c.UnmarshalJSON(data); err == nil { - log.Info("forge.ConfigLoad()", len(c.ForgeConfigs), "entries in ~/.config/forge") - // forge.text file was broken. save on load right away - log.Info("attempting forge.ConfigSave()") - c.ConfigSave() - return nil - } - } - } - } - - cpath := filepath.Join(os.Getenv("FORGE_CONFIG"), ".") - if _, err := os.Stat(cpath); err == nil { - log.Info("Something has gone wrong. Your", os.Getenv("FORGE_CONFIG"), "directory exists") - log.Info("However, the config files could not be loaded") - } - - return nil -} - -func (c *ForgeConfigs) loadText() error { - // this lets the user hand edit the config - data, err := loadFile("forge.text") - if err != nil { - return err - } - if data == nil { - return fmt.Errorf("forge.text data was nil") - } - if len(data) == 0 { - return fmt.Errorf("forge.text was empty") - } - - // attempt to marshal forge.text - if err := c.UnmarshalTEXT(data); err != nil { - return err - } - log.Log(INFO, "forge.loadText()", len(c.ForgeConfigs), "entries in ~/.config/forge") - return nil -} - -func loadFile(filename string) ([]byte, error) { - fullname := filepath.Join(os.Getenv("FORGE_CONFIG"), filename) - data, err := os.ReadFile(fullname) - if errors.Is(err, os.ErrNotExist) { - // if file does not exist, just return nil. this - // will cause ConfigLoad() to try the next config file like "forge.text" - // because the user might want to edit the .config by hand - return nil, nil - } - if err != nil { - // log.Info("open config file :", err) - return nil, err - } - return data, nil -} - -func configWrite(filename string, data []byte) error { - fullname := filepath.Join(os.Getenv("FORGE_CONFIG"), filename) - - cfgfile, err := os.OpenFile(fullname, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) - defer cfgfile.Close() - if err != nil { - log.Warn("open config file :", err) - return err - } - if filename == "forge.text" { - log.Infof("%s : your preferences file has been updated. (%d) bytes\n", fullname, len(data)) - // add header - cfgfile.Write([]byte("\n")) - cfgfile.Write([]byte("# this file is intended to be used to customize settings on what\n")) - cfgfile.Write([]byte("# git repos you have write access to. That is, where you can run 'git push'\n")) - cfgfile.Write([]byte("\n")) - } - cfgfile.Write(data) - return nil -} |
