diff options
Diffstat (limited to 'init.go')
| -rw-r--r-- | init.go | 76 |
1 files changed, 76 insertions, 0 deletions
@@ -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 +} |
