Update 'ini.go'

This commit is contained in:
Steven 2023-05-19 16:19:13 -04:00
parent 50f3ea10db
commit 88e928e51a

129
ini.go
View File

@ -20,13 +20,12 @@ func NewConfiguration(fileLocation string) *Configuration {
return conf
}
func (config *Configuration) GetSection(sectionName string) *ini.Section {
func (config *Configuration) GetSection(sectionName string) (*ini.Section, error) {
section, err := config.file.GetSection(sectionName)
if err != nil {
fmt.Printf("Error getting section %v in config: %v", sectionName, err)
os.Exit(1)
return nil, err
}
return section
return section, nil
}
func GetChildSection(section *ini.Section, childSectionName string) (childSection *ini.Section, err error) {
@ -43,37 +42,77 @@ func GetChildSections(section *ini.Section) (childSections []*ini.Section) {
return section.ChildSections()
}
func (config *Configuration) GetKey(path string) *ini.Key {
func CreateSection(path string, file *ini.File) error {
pathSplit := strings.Split(path, ".")
for i := 0; i < len(pathSplit)-1; i++ {
file.NewSections()
}
return nil
}
func (config *Configuration) GetKey(path string) (*ini.Key, error) {
splitPaths := strings.Split(path, ".")
if len(splitPaths) == 1 {
splitPaths = append([]string{"."}, splitPaths...)
}
sectionMask := strings.Join(splitPaths[0:len(splitPaths)-1], ".")
section := config.GetSection(sectionMask)
section, err := config.GetSection(sectionMask)
if err != nil {
return nil, err
}
keyName := splitPaths[len(splitPaths)-1]
key, err := section.GetKey(keyName)
if err != nil {
fmt.Printf("Error getting key %v: %v", keyName, err)
return nil, err
}
return key
}
func (config *Configuration) GetAsString(path string) string {
return config.GetKey(path).String()
return key, nil
}
func (config *Configuration) SetValue(path string, value string) {
config.GetKey(path).SetValue(value)
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", path, err)
os.Exit(1)
}
fmt.Printf("New Val: Split Path: %v", splitPath)
}
key, err = config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
os.Exit(1)
}
key.SetValue(value)
}
func (config *Configuration) GetAsString(path string) string {
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
return key.String()
}
func (config *Configuration) GetAsStrings(path string) []string {
return config.GetKey(path).Strings(",")
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
return key.Strings(",")
}
func (config *Configuration) GetAsInt(path string) int {
var i int
var err error
i, err = config.GetKey(path).Int()
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
i, err = key.Int()
if err != nil {
fmt.Printf("Error parsing integer: %v", err)
os.Exit(1)
@ -82,13 +121,21 @@ func (config *Configuration) GetAsInt(path string) int {
}
func (config *Configuration) GetAsInts(path string) []int {
return config.GetKey(path).Ints(",")
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
return key.Ints(",")
}
func (config *Configuration) GetAsUInt(path string) uint {
var i uint
var err error
i, err = config.GetKey(path).Uint()
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
i, err = key.Uint()
if err != nil {
fmt.Printf("Error parsing integer: %v", err)
os.Exit(1)
@ -97,13 +144,21 @@ func (config *Configuration) GetAsUInt(path string) uint {
}
func (config *Configuration) GetAsUInts(path string) []uint {
return config.GetKey(path).Uints(",")
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
return key.Uints(",")
}
func (config *Configuration) GetAsFloat(path string) float64 {
var f float64
var err error
f, err = config.GetKey(path).Float64()
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
f, err = key.Float64()
if err != nil {
fmt.Printf("Error parsing float: %v", err)
os.Exit(1)
@ -112,13 +167,21 @@ func (config *Configuration) GetAsFloat(path string) float64 {
}
func (config *Configuration) GetAsFloats(path string) []float64 {
return config.GetKey(path).Float64s(",")
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
return key.Float64s(",")
}
func (config *Configuration) GetAsBoolean(path string) bool {
var b bool
var err error
b, err = config.GetKey(path).Bool()
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
b, err = key.Bool()
if err != nil {
fmt.Printf("Error parsingn bool: %v", err)
os.Exit(1)
@ -127,11 +190,27 @@ func (config *Configuration) GetAsBoolean(path string) bool {
}
func (config *Configuration) GetAsBooleans(path string) []bool {
return config.GetKey(path).Bools(",")
key, err := config.GetKey(path)
if err != nil {
fmt.Printf("Error getting path %v in config: %v", path, err)
}
return key.Bools(",")
}
func (config *Configuration) load() {
var err error = nil
if _, err := os.Stat(config.fileLocation); err != nil {
file, err := os.Create(config.fileLocation)
if err != nil {
fmt.Printf("Failed to create configuration file: %v", err)
os.Exit(1)
}
_, err = file.WriteString("[General]\nserver = sfs.example.com\nport = 7392\nusername = user\nauth-token = token\n; http:// or https:// is necessary\n; port is optional\nhttp-server = http://sfs.example.com:80\npublic-key =\n\n[Share]\nsync-interval = 60")
if err != nil {
fmt.Printf("Error creating configuration file: %v", err)
os.Exit(1)
}
}
var err error
config.file, err = ini.Load(config.fileLocation)
if err != nil {
fmt.Printf("Failed to open configuration file: %v", err)
@ -139,10 +218,6 @@ func (config *Configuration) load() {
}
}
func (config *Configuration) Reload() {
config.load()
}
func (config *Configuration) Save() {
err := config.file.SaveTo(config.fileLocation)
if err != nil {