diff options
Diffstat (limited to 'Save.go')
| -rw-r--r-- | Save.go | 77 |
1 files changed, 75 insertions, 2 deletions
@@ -39,9 +39,9 @@ func (f *Forge) Save() error { } log.Info("Okay, this is", argvpb.GetAPPNAME()) - err = f.Config.ConfigSave() + err = f.Config.configSave() if err != nil { - log.Info("forge.Config.ConfigSave() error", err) + log.Info("forge.Config.configSave() error", err) return err } @@ -57,3 +57,76 @@ func (f *Forge) Save() error { } return nil } + +func (f *Forge) saveRepos() error { + if ENV.Verbose() { + return f.Repos.SaveVerbose() + } + return f.Repos.Save() +} + +// functions to import and export the protobuf +// data to and from config files + +// write to ~/.config/forge/ +func (cfg *ForgeConfigs) configSave() error { + var header string + header += "\n" + header += "# the forge config file\n" + header += "# You can customize things like:\n" + header += "#\n" + header += "# * which repos you have write access to\n" + header += "# * custom branch names for 'master', 'devel' and 'user'\n" + header += "# * 'favorites' so you can remember which things you like\n" + header += "# * sometimes protobuf TEXT can fail so as a backup this also creates a .json file\n" + header += "#\n" + header += "\n" + return config.SaveWithHeader(cfg, header) +} + +func (pb *ForgeConfigs) saveVerbose() error { + err := config.SavePB(pb) + if err == nil { + log.Printf("Saved %s with len(%d) ForgeConfigs.\n", pb.Filename, pb.Len()) + } else { + log.Printf("Save err %s with len(%d) ForgeConfigs. err(%v)\n", pb.Filename, pb.Len(), err) + } + return err +} + +// returns err1 || err2 +func (f *Forge) configSave() error { + if f.Config == nil { + return log.Errorf("forge.Config == nil") + } + + if !config.HasChanged("forge") { + return nil + } + + // only let forge edit & save the config files + // inforce this in lib config? + if !(argvpb.GetAPPNAME() == "forge" || argvpb.GetAPPNAME() == "guireleaser") { + log.Info("This is not forge") + return log.Errorf("Only forge can save the forge config file") + } + + // migrate from the old gopath to "namespace" + for fc := range f.Config.IterAll() { + if fc.Namespace != "" { + continue + } + if fc.Namespace != fc.GoPath { + fc.Namespace = fc.GoPath + } + // 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()) + + if err := f.Config.configSave(); err != nil { + log.Info("forge.Config.ConfigSave() error", err) + return err + } + return nil +} |
