From b7bf623f396d332d84a682252ae93cb5fac0c921 Mon Sep 17 00:00:00 2001 From: "U-DESKTOP-2OEHKSS\\brbuller" Date: Wed, 1 Mar 2017 08:04:29 -0600 Subject: [PATCH] If config file doesn't exist, create a blank one --- config_file.go | 12 ++-- general_config.go | 142 ---------------------------------------------- 2 files changed, 8 insertions(+), 146 deletions(-) delete mode 100644 general_config.go diff --git a/config_file.go b/config_file.go index 9ba401c..9e54def 100644 --- a/config_file.go +++ b/config_file.go @@ -9,6 +9,7 @@ import ( "strconv" "strings" "time" + "os" "github.com/BurntSushi/toml" ) @@ -39,14 +40,17 @@ func NewGeneralConfig(name, path string) (*GeneralConfig, error) { // Load loads config files into the config func (gf *GeneralConfig) Load() error { if strings.TrimSpace(gf.Name) == "" || strings.TrimSpace(gf.Path) == "" { - return errors.New("Invalid ConfigFile Name: " + gf.Path + "/" + gf.Name) + return errors.New("Invalid ConfigFile Name: " + gf.Path + string(os.PathSeparator) + gf.Name) } // Config files end with .conf - cfgPath := gf.Path + "/" + gf.Name + ".conf" + cfgPath := gf.Path + string(os.PathSeparator) + gf.Name + ".conf" tomlData, err := ioutil.ReadFile(cfgPath) if err != nil { - return err + // Couldn't find the file, save a new one + if err = gf.Save(); err != nil { + return err + } } if _, err := toml.Decode(string(tomlData), &gf); err != nil { return err @@ -57,7 +61,7 @@ func (gf *GeneralConfig) Load() error { // Save writes the config to file(s) func (gf *GeneralConfig) Save() error { buf := new(bytes.Buffer) - cfgPath := gf.Path + "/" + gf.Name + ".conf" + cfgPath := gf.Path + string(os.PathSeparator) + gf.Name + ".conf" if err := toml.NewEncoder(buf).Encode(gf); err != nil { return err } diff --git a/general_config.go b/general_config.go deleted file mode 100644 index 79654a3..0000000 --- a/general_config.go +++ /dev/null @@ -1,142 +0,0 @@ -package userConfig - -import ( - "bytes" - "errors" - "io/ioutil" - "os" - "strings" - - "github.com/BurntSushi/toml" -) - -// GeneralConfig is the basic ConfigFile -// All configs made with package userConfig will have this file -// All additional config files will have an entry in 'ConfigFiles' here -type GeneralConfig struct { - Name string `toml:"-"` - Path string `toml:"-"` - ConfigFiles []string `toml:"additional_config"` - Values map[string]string `toml:"general"` -} - -// NewGeneralConfig generates a General Config struct -func NewGeneralConfig(name, path string) (*GeneralConfig, error) { - gf := &GeneralConfig{Name: name, Path: path} - gf.ConfigFiles = []string{} - gf.Values = make(map[string]string) - - // Check if file exists - //var f os.FileInfo - var err error - if _, err = os.Stat(gf.GetFullPath()); os.IsNotExist(err) { - if err = gf.Save(); err != nil { - return gf, err - } - } - - if err := gf.Load(); err != nil { - return gf, err - } - return gf, nil -} - -/** START of ConfigFile Interface Implementation **/ - -// GetName returns the name of this config file -func (gf *GeneralConfig) GetName() string { - return gf.Name -} - -// GetPath returns the path of this config file -func (gf *GeneralConfig) GetPath() string { - return gf.Path -} - -// Load loads config files into the config -func (gf *GeneralConfig) Load() error { - if strings.TrimSpace(gf.Name) == "" || strings.TrimSpace(gf.Path) == "" { - return errors.New("Invalid ConfigFile Name: " + gf.GetFullPath()) - } - - // Config files end with .conf - tomlData, err := ioutil.ReadFile(gf.GetFullPath()) - if err != nil { - return err - } - if _, err := toml.Decode(string(tomlData), &gf); err != nil { - return err - } - return nil -} - -// Save writes the config to file(s) -func (gf *GeneralConfig) Save() error { - buf := new(bytes.Buffer) - if err := toml.NewEncoder(buf).Encode(gf); err != nil { - return err - } - return ioutil.WriteFile(gf.GetFullPath(), buf.Bytes(), 0644) -} - -// Set sets a key/value pair in gf, if unable to save, revert to old value -// (and return the error) -func (gf *GeneralConfig) Set(k, v string) error { - oldVal := gf.Values[k] - gf.Values[k] = v - if err := gf.Save(); err != nil { - gf.Values[k] = oldVal - return err - } - return nil -} - -// Get gets a key/value pair from gf -func (gf *GeneralConfig) Get(k string) string { - return gf.Values[k] -} - -// GetFullPath returns the full path & filename to the config file -func (gf *GeneralConfig) GetFullPath() string { - return gf.Path + "/" + gf.Name + ".conf" -} - -/** END of ConfigFile Interface Implementation **/ - -// Additional General Config Functions - -// HasConfigFile returns true if GeneralConfig knows about .conf -func (gf *GeneralConfig) HasConfigFile(name string) bool { - for _, v := range gf.ConfigFiles { - if v == name { - return true - } - } - return false -} - -// AddConfigFile adds the config file .conf -/* -func (gf *GeneralConfig) AddConfigFile(name string) (ConfigFile, error) { - // Check if file exists - var f os.FileInfo - var err error - cf := ConfigFile{} - if f, err = os.Stat(cf.GetFullPath()); os.IsNotExist(err) { - if err = cf.Save(); err != nil { - return cf, err - } - } - if gf.HasConfigFile() { - // We already know about this file... So just return it - return gf.GetConfigFile(name) - } - gf.ConfigFiles = append(gf.ConfigFiles, name) - return cf, nil -} - -// GetConfigFile returns an additional config file from the config directory -func (gf *GeneralConfig) GetConfigFile(name string) (ConfigFile, error) { - -} -*/