summaryrefslogtreecommitdiff
path: root/Save.go
diff options
context:
space:
mode:
Diffstat (limited to 'Save.go')
-rw-r--r--Save.go77
1 files changed, 75 insertions, 2 deletions
diff --git a/Save.go b/Save.go
index 6ca5c53..fc03f91 100644
--- a/Save.go
+++ b/Save.go
@@ -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
+}