summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-09-12 10:13:59 -0500
committerJeff Carr <[email protected]>2025-09-12 10:13:59 -0500
commit62e5fc396c560d47a351194da04ccec2d7b4f220 (patch)
tree04bebdf2f6b7f85f0f61a1800e856c07bcbebc9f
parente793c89712357975c564aa04a00ec33004c6ae07 (diff)
pass the full filename to ConfigSave()
-rw-r--r--config.go33
1 files changed, 10 insertions, 23 deletions
diff --git a/config.go b/config.go
index 9167b17..f110ace 100644
--- a/config.go
+++ b/config.go
@@ -13,35 +13,34 @@ import (
)
// write to ~/.config/forge/ unless ENV{FORGE_REPOSDIR} is set
-func (all *Repos) ConfigSave() error {
- if os.Getenv("FORGE_REPOSDIR") == "" {
- homeDir, _ := os.UserHomeDir()
- fullpath := filepath.Join(homeDir, ".config/forge")
- os.Setenv("FORGE_REPOSDIR", fullpath)
- }
+func (all *Repos) ConfigSave(fname string) error {
if all == nil {
- log.Warn("gitpb all == nil")
- return errors.New("gitpb.ConfigSave() all == nil")
+ log.Warn("gitpb repos == nil")
+ return errors.New("gitpb.ConfigSave() repos == nil")
}
data, err := all.Marshal()
if err != nil {
log.Info("gitpb proto.Marshal() failed len", len(data), err)
// often this is because strings have invalid UTF-8. This should probably be fixed in the protobuf code
+ // this might be fixed in the create code, but it can't hurt to try this as a last ditch effort here
+ log.Info("gitpb.ConfigSave() ATTEMPTING TO VALIDATE UTF-8 strings in the protobuf file")
if err := all.tryValidate(); err != nil {
+ log.Info("gitpb.ConfigSave() STILL FAILEd", err)
return err
} else {
// re-attempt Marshal() here
data, err = all.Marshal()
if err == nil {
// validate & sanitize strings worked
- configWrite("repos.pb", data)
+ configWrite(fname, data)
return nil
}
+ log.Info("gitpb.ConfigSave() STILL FAILEd", err)
}
return err
}
- configWrite("repos.pb", data)
+ configWrite(fname, data)
return nil
}
@@ -172,9 +171,7 @@ func loadFile(fullname string) ([]byte, error) {
return data, nil
}
-func configWrite(filename string, data []byte) error {
- fullname := filepath.Join(os.Getenv("FORGE_REPOSDIR"), filename)
-
+func configWrite(fullname string, data []byte) error {
log.Infof("%s your repos have changed state. cached state. (%d) bytes\n", fullname, len(data))
cfgfile, err := os.OpenFile(fullname, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
defer cfgfile.Close()
@@ -182,16 +179,6 @@ func configWrite(filename string, data []byte) error {
log.Warn("open config file :", err)
return err
}
- if filename == "forge.text" {
- // add header
- cfgfile.Write([]byte("# this file is automatically re-generated from forge.pb, however,\n"))
- cfgfile.Write([]byte("# if you want to edit it by hand, you can:\n"))
- cfgfile.Write([]byte("# stop forge; remove forge.pb; edit forge.text; start forge\n"))
- cfgfile.Write([]byte("# this will cause the default behavior to fallback to parsing this file for the config\n"))
- 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(data)
return nil
}