diff --git a/config.go b/config.go index d5e7730..7a1430b 100644 --- a/config.go +++ b/config.go @@ -19,9 +19,28 @@ func str2int(strnum string) int { return i } +func configStat(configFile string) string{ + xdgConfigPath := os.Getenv("XDG_CONFIG_HOME") + if xdgConfigPath == "" { + xdgConfigPath = os.Getenv("HOME")+"/.config" + } + configFile = xdgConfigPath + "/gostations/" + configFile + + if _, err := os.Stat(configFile); errors.Is(err, os.ErrNotExist) { + log.Printf("Your stations config file seems to be missing. A default will be generated.") + err = createIniFile(configFile) + if err != nil { + log.Printf("Erorr creating ini file...") + log.Fatal(err.Error()) + } + } + return configFile +} + func Config(option string) (string, error) { configparser.Delimiter = "=" - configFile := "radiostations.ini" + configFile := configStat("radiostations.ini") + runtimeSection := "DEFAULT" config, err := configparser.Read(configFile) @@ -59,4 +78,4 @@ func options() string { func maxitems() int { items, _ := Config("menu_items.max") return str2int(items) -} \ No newline at end of file +} diff --git a/filer.go b/filer.go new file mode 100644 index 0000000..1794d23 --- /dev/null +++ b/filer.go @@ -0,0 +1,37 @@ +package main + +import ( + "log" + "os" + "path/filepath" +) + +func createDir(fpath string) error { + if err := os.Mkdir(filepath.Dir(fpath + string(filepath.Separator)), 0770); err != nil { + return err + } + return nil +} + +func createIniFile(fpath string) error { + log.Printf("Creating config file: %s\n", fpath) + if err := os.MkdirAll(filepath.Dir(fpath), 0770); err != nil { + return err + } + + file, err := os.Create(fpath) + if err != nil { + log.Fatal(err.Error()) + return err + } + + _, err = file.Write([]byte("[DEFAULT]\n")) + _, err = file.Write([]byte("radio_browser.api=all.api.radio-browser.info\n")) + _, err = file.Write([]byte("player.command=mpv\n")) + _, err = file.Write([]byte("player.options=--no-video\n")) + _, err = file.Write([]byte("menu_items.max=9999\n")) + + defer file.Close() + + return err +}