summaryrefslogtreecommitdiff
path: root/loadConfig.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-20 05:50:38 -0500
committerJeff Carr <[email protected]>2025-10-20 05:50:38 -0500
commit8a24584262a90956e012cee7b03c8c2b9f4b794c (patch)
tree8b7d0afd04e717d7c07da5eb2894debd74ec2307 /loadConfig.go
parentb6e93c08d601a7a6c27a0fdcdf98f6cb7dc9ccd8 (diff)
reworking this to make it more sane. hopefully.
Diffstat (limited to 'loadConfig.go')
-rw-r--r--loadConfig.go59
1 files changed, 59 insertions, 0 deletions
diff --git a/loadConfig.go b/loadConfig.go
new file mode 100644
index 0000000..0c90a17
--- /dev/null
+++ b/loadConfig.go
@@ -0,0 +1,59 @@
+package config
+
+import (
+ "errors"
+ "strings"
+
+ "go.wit.com/log"
+ "google.golang.org/protobuf/proto"
+)
+
+// loads foo.proto from ~/.config/<appname>/foo.text
+func ConfigLoad(pb proto.Message) error {
+ appname, err := GetAppname() // already configured by your application
+ if err != nil {
+ return err
+ }
+ protoname, err := GetProtobufName(pb) // defined in the foo.proto file
+ if err != nil {
+ return err
+ }
+
+ curfilename, err := GetFilename(pb)
+ if err == nil {
+ return err
+ }
+
+ // Get ~/.config/appname/protoname.text
+ fullname := GetConfigFilename(appname, protoname)
+
+ 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 errors.Join(err, errors.New("something is wrong in lib/config"))
+ }
+ }
+ return 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 errors.Join(err, errors.New("something is wrong in lib/config"))
+ }
+ }
+ return nil
+ }
+ }
+ }
+ return ErrMarshal
+}