From 5e1e8723eb1093823f6dca2eea517394f92ac1c8 Mon Sep 17 00:00:00 2001 From: Steven Tracey Date: Wed, 24 Sep 2025 06:52:25 -0400 Subject: [PATCH] Small Fixes --- ini.go | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/ini.go b/ini.go index 85e48fd..10ea3ce 100644 --- a/ini.go +++ b/ini.go @@ -13,7 +13,14 @@ type Configuration struct { file *ini.File } -func NewConfiguration(fileLocation string) *Configuration { +func NewConfiguration(fileLocation string, defaultConfig string) *Configuration { + conf := new(Configuration) + conf.fileLocation = fileLocation + conf.createAndLoad(defaultConfig) + return conf +} + +func LoadConfiguration(fileLocation string) *Configuration { conf := new(Configuration) conf.fileLocation = fileLocation conf.load() @@ -197,19 +204,29 @@ func (config *Configuration) GetAsBooleans(path string) []bool { return key.Bools(",") } -func (config *Configuration) load() { - if _, err := os.Stat(config.fileLocation); err != nil { +func (config *Configuration) createAndLoad(defaultConfig string) { + _, err := os.Stat(config.fileLocation) + if errors.Is(err, os.ErrNotExist) { 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") + _, err = file.WriteString(defaultConfig) if err != nil { fmt.Printf("Error creating configuration file: %v", err) os.Exit(1) } + } else if err != nil { + fmt.Printf("Error loading configuration file: %v", err) + os.Exit(1) + } else { + fmt.Printf("Configuration File already exists... loading") } + config.load() +} + +func (config *Configuration) load() { var err error config.file, err = ini.Load(config.fileLocation) if err != nil {