42 lines
865 B
Go
42 lines
865 B
Go
|
// +build windows
|
||
|
|
||
|
package userdirs
|
||
|
|
||
|
import (
|
||
|
"path/filepath"
|
||
|
|
||
|
"github.com/apparentlymart/go-userdirs/windowsbase"
|
||
|
)
|
||
|
|
||
|
func supportedOS() bool {
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
func forApp(name string, vendor string, bundleID string) Dirs {
|
||
|
subDir := filepath.Join(vendor, name)
|
||
|
localBase, err := windowsbase.LocalAppDataDir()
|
||
|
if err != nil {
|
||
|
localBase = ""
|
||
|
}
|
||
|
roamingBase, err := windowsbase.RoamingAppDataDir()
|
||
|
if err != nil {
|
||
|
roamingBase = ""
|
||
|
}
|
||
|
if localBase == "" {
|
||
|
// Should never happen in practice, because this is always set on Windows
|
||
|
localBase = "c:\\"
|
||
|
}
|
||
|
if roamingBase == "" {
|
||
|
roamingBase = localBase // store everything locally, then
|
||
|
}
|
||
|
|
||
|
roamingDir := filepath.Join(roamingBase, subDir)
|
||
|
localDir := filepath.Join(localBase, subDir)
|
||
|
|
||
|
return Dirs{
|
||
|
ConfigDirs: []string{roamingDir},
|
||
|
DataDirs: []string{roamingDir},
|
||
|
CacheDir: localDir,
|
||
|
}
|
||
|
}
|