diff --git a/ini.go b/ini.go index 786220e..0624d09 100644 --- a/ini.go +++ b/ini.go @@ -102,19 +102,48 @@ func (config *Configuration) SetValue(path string, value string) { err = config.file.NewSections(splitPath[0 : len(splitPath)-1]...) if err != nil { fmt.Printf("Error creating section %v in config: %v\n", path, err) - os.Exit(1) + return + } + } + key, err = config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return + } + key.SetValue(value) +} + +func (config *Configuration) SetValueErr(path string, value string) error { + key, err := config.GetKey(path) + if err != nil { + err = nil + splitPath := strings.Split(path, ".") + err = config.file.NewSections(splitPath[0 : len(splitPath)-1]...) + if err != nil { + fmt.Printf("Error creating section %v in config: %v\n", path, err) + return err } fmt.Printf("New Val: Split Path: %v\n", splitPath) } key, err = config.GetKey(path) if err != nil { fmt.Printf("Error getting path %v in config: %v\n", path, err) - os.Exit(1) + return err } key.SetValue(value) + return nil } -func (config *Configuration) GetAsString(path string) (string, error) { +func (config *Configuration) GetAsString(path string) string { + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return "" + } + return key.String() +} + +func (config *Configuration) GetAsStringErr(path string) (string, error) { key, err := config.GetKey(path) if err != nil { fmt.Printf("Error getting path %v in config: %v\n", path, err) @@ -123,7 +152,16 @@ func (config *Configuration) GetAsString(path string) (string, error) { return key.String(), nil } -func (config *Configuration) GetAsStrings(path string) ([]string, error) { +func (config *Configuration) GetAsStrings(path string) []string { + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return nil + } + return key.Strings(",") +} + +func (config *Configuration) GetAsStringsErr(path string) ([]string, error) { key, err := config.GetKey(path) if err != nil { fmt.Printf("Error getting path %v in config: %v\n", path, err) @@ -132,7 +170,22 @@ func (config *Configuration) GetAsStrings(path string) ([]string, error) { return key.Strings(","), nil } -func (config *Configuration) GetAsInt(path string) (int, error) { +func (config *Configuration) GetAsInt(path string) int { + var i int + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return 0 + } + i, err = key.Int() + if err != nil { + fmt.Printf("Error parsing integer: %v\n", err) + return 0 + } + return i +} + +func (config *Configuration) GetAsIntErr(path string) (int, error) { var i int key, err := config.GetKey(path) if err != nil { @@ -147,7 +200,16 @@ func (config *Configuration) GetAsInt(path string) (int, error) { return i, nil } -func (config *Configuration) GetAsInts(path string) ([]int, error) { +func (config *Configuration) GetAsInts(path string) []int { + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return nil + } + return key.Ints(",") +} + +func (config *Configuration) GetAsIntsErr(path string) ([]int, error) { key, err := config.GetKey(path) if err != nil { fmt.Printf("Error getting path %v in config: %v\n", path, err) @@ -156,7 +218,22 @@ func (config *Configuration) GetAsInts(path string) ([]int, error) { return key.Ints(","), nil } -func (config *Configuration) GetAsUInt(path string) (uint, error) { +func (config *Configuration) GetAsUInt(path string) uint { + var i uint + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return 0 + } + i, err = key.Uint() + if err != nil { + fmt.Printf("Error parsing integer: %v\n", err) + return 0 + } + return i +} + +func (config *Configuration) GetAsUIntErr(path string) (uint, error) { var i uint key, err := config.GetKey(path) if err != nil { @@ -171,7 +248,16 @@ func (config *Configuration) GetAsUInt(path string) (uint, error) { return i, nil } -func (config *Configuration) GetAsUInts(path string) ([]uint, error) { +func (config *Configuration) GetAsUInts(path string) []uint { + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return nil + } + return key.Uints(",") +} + +func (config *Configuration) GetAsUIntsErr(path string) ([]uint, error) { key, err := config.GetKey(path) if err != nil { fmt.Printf("Error getting path %v in config: %v\n", path, err) @@ -180,7 +266,22 @@ func (config *Configuration) GetAsUInts(path string) ([]uint, error) { return key.Uints(","), nil } -func (config *Configuration) GetAsFloat(path string) (float64, error) { +func (config *Configuration) GetAsFloat(path string) float64 { + var f float64 + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return 0 + } + f, err = key.Float64() + if err != nil { + fmt.Printf("Error parsing float: %v\n", err) + return 0 + } + return f +} + +func (config *Configuration) GetAsFloatErr(path string) (float64, error) { var f float64 key, err := config.GetKey(path) if err != nil { @@ -195,7 +296,16 @@ func (config *Configuration) GetAsFloat(path string) (float64, error) { return f, nil } -func (config *Configuration) GetAsFloats(path string) ([]float64, error) { +func (config *Configuration) GetAsFloats(path string) []float64 { + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return nil + } + return key.Float64s(",") +} + +func (config *Configuration) GetAsFloatsErr(path string) ([]float64, error) { key, err := config.GetKey(path) if err != nil { fmt.Printf("Error getting path %v in config: %v\n", path, err) @@ -204,15 +314,27 @@ func (config *Configuration) GetAsFloats(path string) ([]float64, error) { return key.Float64s(","), nil } -func (config *Configuration) GetAsBoolean(path string) (bool, error) { - var b bool - var err error +func (config *Configuration) GetAsBoolean(path string) bool { + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return false + } + b, err := key.Bool() + if err != nil { + fmt.Printf("Error parsing bool: %v\n", err) + return false + } + return b +} + +func (config *Configuration) GetAsBooleanErr(path string) (bool, error) { key, err := config.GetKey(path) if err != nil { fmt.Printf("Error getting path %v in config: %v\n", path, err) return false, err } - b, err = key.Bool() + b, err := key.Bool() if err != nil { fmt.Printf("Error parsing bool: %v\n", err) return false, err @@ -220,7 +342,16 @@ func (config *Configuration) GetAsBoolean(path string) (bool, error) { return b, nil } -func (config *Configuration) GetAsBooleans(path string) ([]bool, error) { +func (config *Configuration) GetAsBooleans(path string) []bool { + key, err := config.GetKey(path) + if err != nil { + fmt.Printf("Error getting path %v in config: %v\n", path, err) + return nil + } + return key.Bools(",") +} + +func (config *Configuration) GetAsBooleansErr(path string) ([]bool, error) { key, err := config.GetKey(path) if err != nil { fmt.Printf("Error getting path %v in config: %v\n", path, err)