summaryrefslogtreecommitdiff
path: root/loadConfig.go
diff options
context:
space:
mode:
Diffstat (limited to 'loadConfig.go')
-rw-r--r--loadConfig.go61
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
+}