func newPossiblyInvalidConfig(path string, defaultConfig DefaultConfig) (PossiblyInvalidConfig, error) { config := defaultConfig configDir := filepath.Dir(path) if err := os.MkdirAll(configDir, os.ModeDir|0755); err != nil { return PossiblyInvalidConfig{}, err } cl := configloader.New() sous.SetupLogging(&cl) var writeDefault bool defer func() { if !writeDefault { return } lsc := &LocalSousConfig{config.Config} lsc.Save(path) sous.Log.Info.Println("initialised config file: " + path) }() _, err := os.Stat(path) if os.IsNotExist(err) { err = nil writeDefault = true } if err != nil { return PossiblyInvalidConfig{}, err } return PossiblyInvalidConfig{Config: config.Config}, cl.Load(config.Config, path) }
// SetValue stores a particular value on the config func (c *LocalSousConfig) SetValue(path, name, value string) error { if err := configloader.New().SetValue(c.Config, name, value); err != nil { return err } return c.Save(path) }
// GetValue retreives and returns a particular value from the configuration func (c *LocalSousConfig) GetValue(name string) (string, error) { v, err := configloader.New().GetValue(c.Config, name) return fmt.Sprint(v), err }