diff options
| author | Jeff Carr <[email protected]> | 2025-10-21 15:48:46 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-21 15:48:46 -0500 |
| commit | d54c59107289968116211111ff52850768fcec24 (patch) | |
| tree | cb4559e8d06a8fa6747afa732c8f0f7099ed2b72 | |
| parent | 9a3a2e16c7fc8769a9a6af5f598acb3ffc77e4b4 (diff) | |
stomping the guts out of how bad this is
| -rw-r--r-- | Load.go | 50 | ||||
| -rw-r--r-- | Save.go | 4 | ||||
| -rw-r--r-- | SetMode.go | 24 | ||||
| -rw-r--r-- | config.go | 80 | ||||
| -rw-r--r-- | init.go | 54 |
5 files changed, 103 insertions, 109 deletions
@@ -14,18 +14,38 @@ import ( "go.wit.com/lib/ENV" "go.wit.com/lib/config" + "go.wit.com/lib/protobuf/argvpb" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) func (pb *ForgeConfigs) loadConfig() error { filename, err := config.LoadByAppName(pb, "forge", "forge") + log.Printf("%s loadConfig() about to load Config from %s\n", argvpb.GetAPPNAME(), filename) if err != nil { log.Info("couldn't load filename:", filename) log.Info("forge has not been configured") panic("config failed to load. make a new/blank forge config here?") } ENV.SetGlobal("lib/forgepb", "ForgeCfg", pb.Filename) + var changed bool + // migrate from the old gopath to "namespace" + for fc := range pb.IterAll() { + if fc.Namespace != "" { + continue + } + if fc.Namespace != fc.GoPath { + fc.Namespace = fc.GoPath + changed = true + } + // todo: deprecate this + fc.GoPath = "" // I want to do this but it might be a bad idea at this point + } + log.Printf("%s loadConfig() loaded Config from %s\n", argvpb.GetAPPNAME(), pb.Filename) + if changed { + config.SetChanged("forge", true) + } + // init new config here return err } @@ -58,3 +78,33 @@ func (f *Forge) loadPatchsets() error { return nil } */ + +func makeDefaultConfig() (*ForgeConfigs, error) { + cfg := NewForgeConfigs() + // Get fullpath to ~/.config/forge/forge.text + cfg.loadConfig() + + cfg.addSampleConfigs() + ENV.PrintTable() + var err error + if err = cfg.saveVerbose(); err != nil { + log.Info("config save error:", err) + } + return cfg, err +} + +// first time user. add go.wit.com as an example +func (cfg *ForgeConfigs) addSampleConfigs() { + newc := new(ForgeConfig) + newc.GoPath = "go.wit.com" + newc.Writable = true + newc.Directory = true + cfg.Append(newc) + + newc = new(ForgeConfig) + newc.GoPath = "priv.wit.com/corp" + newc.Writable = true + newc.Private = true + newc.Directory = true + cfg.Append(newc) +} @@ -56,7 +56,7 @@ func (f *Forge) Save() error { // todo: deprecate this fc.GoPath = "" // I want to do this but it might be a bad idea at this point } - log.Info("Okay, this is", argvpb.GetAPPNAME()) + log.Printf("%s Save() about to save Config at %s\n", argvpb.GetAPPNAME(), f.Config.Filename) err = f.Config.configSave() if err != nil { @@ -143,7 +143,7 @@ func (f *Forge) configSave() error { // todo: deprecate this // fc.GoPath = "" // I want to do this but it might be a bad idea at this point } - log.Info("Okay, this is", argvpb.GetAPPNAME()) + log.Printf("%s configSave() about to save Config at %s\n", argvpb.GetAPPNAME(), f.Config.Filename) if err := f.Config.configSave(); err != nil { log.Info("forge.Config.ConfigSave() error", err) diff --git a/SetMode.go b/SetMode.go new file mode 100644 index 0000000..50fea4b --- /dev/null +++ b/SetMode.go @@ -0,0 +1,24 @@ +// Copyright 2025 WIT.COM Inc Licensed GPL 3.0 + +package forgepb + +import ( + "go.wit.com/lib/ENV" +) + +func (f *Forge) SetMode(newmode ForgeMode) error { + if f.mode == newmode { + // nothing changed + return nil + } + f.mode = newmode + err := ENV.Set("mode", newmode.String()) + if err != nil { + panic("ENV.Set() doesn't work") + } + err = ENV.Save() + if err != nil { + panic("ENV.Save() doesn't work") + } + return err +} diff --git a/config.go b/config.go deleted file mode 100644 index 0a6d32b..0000000 --- a/config.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2025 WIT.COM Inc Licensed GPL 3.0 - -package forgepb - -import ( - "errors" - "os" - - "go.wit.com/lib/ENV" - "go.wit.com/lib/config" - "go.wit.com/log" -) - -func (f *Forge) SetMode(newmode ForgeMode) error { - if f.mode == newmode { - // nothing changed - return nil - } - f.mode = newmode - err := ENV.Set("mode", newmode.String()) - if err != nil { - panic("ENV.Set() doesn't work") - } - err = ENV.Save() - if err != nil { - panic("ENV.Save() doesn't work") - } - return err -} - -func loadStdConfig() (*ForgeConfigs, error) { - cfg := NewForgeConfigs() - err := cfg.loadConfig() - - // todo: do something here with this error? - // right now, handled in forge - // todo: move the code from forge here - if errors.Is(err, os.ErrNotExist) { - log.Info("no files existed err=", err) - } else if errors.Is(err, config.ErrEmpty) { - log.Info("files were blank err=", err) - } else if errors.Is(err, config.ErrMarshal) { - log.Info("files existed and could not be Marshalled() err=", err) - } else if err == nil { - // do nothing. probably shoulda started with this - } else { - log.Info("some other bad problem err=", err) - } - return cfg, nil -} - -func makeDefaultConfig() (*ForgeConfigs, error) { - cfg := NewForgeConfigs() - // Get fullpath to ~/.config/forge/forge.text - cfg.loadConfig() - - cfg.addSampleConfigs() - ENV.PrintTable() - var err error - if err = cfg.saveVerbose(); err != nil { - log.Info("config save error:", err) - } - return cfg, err -} - -// first time user. add go.wit.com as an example -func (cfg *ForgeConfigs) addSampleConfigs() { - newc := new(ForgeConfig) - newc.GoPath = "go.wit.com" - newc.Writable = true - newc.Directory = true - cfg.Append(newc) - - newc = new(ForgeConfig) - newc.GoPath = "priv.wit.com/corp" - newc.Writable = true - newc.Private = true - newc.Directory = true - cfg.Append(newc) -} @@ -3,6 +3,7 @@ package forgepb import ( + "errors" "os" "os/user" "path/filepath" @@ -25,36 +26,43 @@ func Default(opts ...OptionFunc) *Engine { */ func Init() (*Forge, error) { - cfg, err := loadStdConfig() // will also handle new users - return initFromConfig(cfg), err + f := new(Forge) + f.Config = NewForgeConfigs() + err := f.Config.loadConfig() + err = errors.Join(err, f.postInit()) + return f, err } -func InitByAppname(argname string) *Forge { - cfg := NewForgeConfigs() - err := cfg.loadConfig() - if err != nil { - log.Info("ConfigLoad() error. make a default config here?", err) - } - return initFromConfig(cfg) +func InitByAppname(argname string) (*Forge, error) { + f := new(Forge) + f.Config = NewForgeConfigs() + err := f.Config.loadConfig() + err = errors.Join(err, f.postInit()) + return f, err } -func InitByFullpath(filename string) *Forge { +func InitByFullpath(filename string) (*Forge, error) { + f := new(Forge) cfg := NewForgeConfigs() err := config.LoadFile(cfg, filename) + f.Config = cfg + + err = errors.Join(err, f.postInit()) if err != nil { - log.Info("forge load config err", err) + log.Info("forge.InitByFullpath() error:", filename, err) } - return initFromConfig(cfg) + return f, err } -func initFromConfig(cfg *ForgeConfigs) *Forge { - if cfg == nil { - log.Info("forge config was == nil") +// saves the config if there have been changes +func (f *Forge) Close() error { + if err := f.Save(); err != nil { + return err } - f := new(Forge) - f.Config = cfg - f.Config.loadConfig() + return nil +} +func (f *Forge) postInit() error { // always define if ENV.Get("username") == "" { usr, _ := user.Current() @@ -105,13 +113,5 @@ func initFromConfig(cfg *ForgeConfigs) *Forge { log.Printf("forge failed to load %s file with len(%d) repos err=(%v)\n", f.Repos.Filename, f.Repos.Len(), err) panic("failed to load repos.pb") } - return f -} - -// saves the config if there have been changes -func (f *Forge) Close() error { - if err := f.Save(); err != nil { - return err - } - return nil + return err } |
