diff --git a/internal/config/config.go b/internal/config/config.go index 792582b..351bfcd 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -54,31 +54,34 @@ func defaultConfig() Config { func LoadConfig(configPath string) Config { f, err := os.ReadFile(configPath) + + var cfg Config + configFileNotExist := false if err != nil { if errors.Is(err, os.ErrNotExist) { - return initConfig(configPath) + cfg = defaultConfig() + configFileNotExist = true + } else { + log.Fatal(err) + } + } else { + err = toml.Unmarshal(f, &cfg) + if err != nil { + panic(err) } - log.Fatal(err) - } - var cfg Config - err = toml.Unmarshal(f, &cfg) - if err != nil { - panic(err) } kong.Parse(&cfg, kong.Configuration(kongtoml.Loader, configPath)) - return cfg -} + if configFileNotExist { + b, err := toml.Marshal(cfg) + if err != nil { + panic(err) + } + err = os.WriteFile(configPath, b, 0666) + if err != nil { + log.Fatal(err) + } + } -func initConfig(configPath string) Config { - cfg := defaultConfig() - b, err := toml.Marshal(cfg) - if err != nil { - panic(err) - } - err = os.WriteFile(configPath, b, 0666) - if err != nil { - log.Fatal(err) - } return cfg }