diff --git a/config/config.go b/config/config.go index a653821..63b1ea6 100644 --- a/config/config.go +++ b/config/config.go @@ -29,15 +29,23 @@ var ( ) func ReadConfig() { + for k, v := range defaults { viper.SetDefault(k, v) } + viper.SetConfigName("config") viper.AddConfigPath(HOME_DIR + "/.config/gomp") + err := viper.ReadInConfig() if err != nil { fmt.Println("Could Not Read Config file.") } + + // Expanding ~ to the User's Home Directory + viper.Set("MUSIC_DIRECTORY", utils.ExpandHomeDir(viper.GetString("MUSIC_DIRECTORY"))) + viper.Set("DEFAULT_IMAGE_PATH", utils.ExpandHomeDir(viper.GetString("DEFAULT_IMAGE_PATH"))) + viper.Set("CACHE_DIR", utils.ExpandHomeDir(viper.GetString("CACHE_DIR"))) } func GenerateKeyMap(funcMap map[string]func()) { diff --git a/utils/utils.go b/utils/utils.go index 95db7bf..772096d 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -2,6 +2,8 @@ package utils import ( "io/ioutil" + "os" + "path/filepath" "strconv" "strings" "syscall" @@ -117,6 +119,17 @@ func CheckDirectoryFmt(path string) string { } } +func ExpandHomeDir(path string) string { + HOME_DIR, _ := os.UserHomeDir() + if strings.HasPrefix(path, "~/") { + return filepath.Join(HOME_DIR, path[1:]) + } else if path == "~" { + return HOME_DIR + } else { + return path + } +} + func GetMatchedString(a []int, s, color string) string { // The Matches are sorted so we just have to traverse the Matches and if the two adjacent matches are not consecutive // then we append the color string at the start + offset and the nulcol ( reset ) at end + offset + 1 and then reset