summaryrefslogtreecommitdiff
path: root/init.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-14 00:15:41 -0500
committerJeff Carr <[email protected]>2025-10-14 00:15:41 -0500
commitfc17dc394aedbc5fd636676202bad40c1f98c1de (patch)
tree197ff50da15f186c38d50a71fede7b0c160ee57f /init.go
parent3b4821a3af62376d675699493e01cd07891ad69c (diff)
implement application specific Config files (and Verbose())
Diffstat (limited to 'init.go')
-rw-r--r--init.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/init.go b/init.go
new file mode 100644
index 0000000..eb5afbe
--- /dev/null
+++ b/init.go
@@ -0,0 +1,76 @@
+package config
+
+// this is an experiment at this point to
+// see how this turns out
+
+import (
+ "errors"
+ "fmt"
+ "os"
+ "path/filepath"
+)
+
+var configPB *Configs
+
+// these are normally what are sent from ldflags
+var APPNAME string
+var BUILDTIME string
+var VERSION string
+
+var argv []string
+
+func Init(appname, version, buildtime string, fromargv []string) error {
+ APPNAME = appname
+ VERSION = version
+ BUILDTIME = buildtime
+ argv = fromargv
+
+ configDir, err := os.UserConfigDir()
+ if err != nil {
+ fmt.Println("OS isn't returning UserConfigDir()", err)
+ return err
+ }
+ fullname := filepath.Join(configDir, appname, "config.text")
+ configPB = NewConfigs()
+ err = loadTEXT(configPB, fullname)
+ if err == nil {
+ return nil
+ }
+
+ if errors.Is(err, os.ErrNotExist) {
+ // file doesn't exist, make a new file
+ return makeNewConfigFile(appname)
+ }
+ if errors.Is(err, ErrEmpty) {
+ fmt.Printf("config file size was empty. out of diskspace? %s\n", fullname)
+ return err
+ }
+ fmt.Println("config.Init()", err)
+ // panic("config")
+ return err
+}
+
+func makeNewConfigFile(appname string) error {
+ configDir, err := os.UserConfigDir()
+ if err != nil {
+ fmt.Println("OS isn't returning UserConfigDir()", err)
+ return err
+ }
+ fullname := filepath.Join(configDir, appname, "config.text")
+
+ configPB = NewConfigs()
+ configPB.Filename = fullname
+
+ newvar := new(Config)
+ newvar.Key = "example config var"
+ newvar.Value = "protobufs are neat"
+ configPB.Clone(newvar)
+
+ newvar.Key = "Verbose"
+ newvar.Value = "true"
+ configPB.Clone(newvar)
+
+ // writes the config file to disk
+ err = Save()
+ return err
+}