@@ -65,6 +65,36 @@ func GetSpicetifyFolder() string {
6565 return result
6666}
6767
68+ func GetStateFolder (name string ) string {
69+ result , isAvailable := os .LookupEnv ("SPICETIFY_STATE" )
70+ defer func () { CheckExistAndCreate (result ) }()
71+
72+ if isAvailable && len (result ) > 0 {
73+ return result
74+ }
75+
76+ if runtime .GOOS == "windows" {
77+ parent := os .Getenv ("APPDATA" )
78+
79+ result = filepath .Join (parent , "spicetify" )
80+ } else if runtime .GOOS == "linux" {
81+ parent , isAvailable := os .LookupEnv ("XDG_STATE_HOME" )
82+
83+ if ! isAvailable || len (parent ) == 0 {
84+ parent = filepath .Join (os .Getenv ("HOME" ), ".local" , "state" )
85+ CheckExistAndCreate (parent )
86+ }
87+
88+ result = filepath .Join (parent , "spicetify" )
89+ } else if runtime .GOOS == "darwin" {
90+ parent := filepath .Join (os .Getenv ("HOME" ), ".local" , "state" )
91+ CheckExistAndCreate (parent )
92+
93+ result = filepath .Join (parent , "spicetify" )
94+ }
95+ return result
96+ }
97+
6898// getUserFolder checks if folder `name` is available in spicetifyFolder,
6999// else creates then returns the path.
70100func GetUserFolder (name string ) string {
0 commit comments