diff --git a/common/common.go b/common/common.go index e0d36df..a386fbf 100644 --- a/common/common.go +++ b/common/common.go @@ -3,12 +3,33 @@ package common import ( "os" "path/filepath" + "runtime" ) func GetConfigDir() string { + if os.Getenv("XDG_CONFIG_HOME") != "" { + return filepath.Join(os.Getenv("XDG_CONFIG_HOME"), "stimvisor") + } + if runtime.GOOS == "windows" { + return filepath.Join(os.Getenv("APPDATA"), "stimvisor") + } home, err := os.UserHomeDir() if err != nil { panic(err) } - return filepath.Join(home, ".stimvisor") + return filepath.Join(home, ".config", "stimvisor") +} + +func GetCacheDir() string { + if os.Getenv("XDG_CACHE_HOME") != "" { + return filepath.Join(os.Getenv("XDG_CACHE_HOME"), "stimvisor") + } + if runtime.GOOS == "windows" { + return filepath.Join(os.Getenv("LOCALAPPDATA"), "stimvisor") + } + home, err := os.UserHomeDir() + if err != nil { + panic(err) + } + return filepath.Join(home, ".cache", "stimvisor") } diff --git a/steam/games.go b/steam/games.go index fdb6023..3cdbea7 100644 --- a/steam/games.go +++ b/steam/games.go @@ -72,8 +72,8 @@ func GetGameInfo(gameId string) (GameInfo, error) { // GetGameInfoCacheDir returns the directory path for caching game information. func GetGameInfoCacheDir() string { - configDir := common.GetConfigDir() - return filepath.Join(configDir, "cache", "gameinfo") + cacheDir := common.GetCacheDir() + return filepath.Join(cacheDir, "gameinfo") } // loadGameInfo loads the game information from the cache or fetches it if not available.