diff options
Diffstat (limited to 'loadConfig.go')
| -rw-r--r-- | loadConfig.go | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/loadConfig.go b/loadConfig.go index 0c90a17..439e65c 100644 --- a/loadConfig.go +++ b/loadConfig.go @@ -25,7 +25,7 @@ func ConfigLoad(pb proto.Message) error { } // Get ~/.config/appname/protoname.text - fullname := GetConfigFilename(appname, protoname) + fullname := makeConfigFilename(appname, protoname) if err = loadTEXT(pb, fullname); err == nil { // If the config is old or broken, this sets the filename @@ -57,3 +57,62 @@ func ConfigLoad(pb proto.Message) error { } return ErrMarshal } + +// loads foo.proto from ~/.config/<appname>/customName.text +func ConfigLoadByName(pb proto.Message, customName string) (string, error) { + if customName == "" { + return "", errors.New("config.Load() customName can not be blank") + } + appname, err := GetAppname() // already configured by your application + if err != nil { + return "", err + } + + // Get ~/.config/appname/customName.text + fullname := makeConfigFilename(appname, customName) + + curfilename, err := GetFilename(pb) + if err != nil { + // pb doesn't have 'Filename' + // probably try to load anyway? + log.Info("ConfigLoadByName() FILENAME old=", curfilename) + log.Info("ConfigLoadByName() FILENAME new=", fullname) + log.Info("pb doesn't have 'Filename'") + log.Printf("err = (%v)\n", err) + panic("blah") + // return fullname, err + } + if curfilename == "" { + log.Printf("ConfigLoadByName() reading in %s\n", fullname) + } + + if err = loadTEXT(pb, fullname); err == nil { + // If the config is old or broken, this sets the filename + if curfilename != fullname { + _, err := SetFilename(pb, fullname) + if err != nil { + log.Info("FILENAME COULD NOT BE SET old=", curfilename) + log.Info("FILENAME COULD NOT BE SET new=", fullname) + return fullname, errors.Join(err, errors.New("something is wrong in lib/config")) + } + } + return fullname, nil + } else { + if strings.HasSuffix(fullname, ".text") { + fulljson := fullname + ".json" + // If the config is old or broken, this sets the filename + if err := loadJSON(pb, fulljson); err == nil { + if curfilename != fullname { + _, err := SetFilename(pb, fullname) + if err != nil { + log.Info("FILENAME COULD NOT BE SET old=", curfilename) + log.Info("FILENAME COULD NOT BE SET new=", fullname) + return fullname, errors.Join(err, errors.New("something is wrong in lib/config")) + } + } + return fullname, nil + } + } + } + return fullname, ErrMarshal +} |
