summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/adrg/xdg/paths_windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/adrg/xdg/paths_windows.go')
-rw-r--r--vendor/github.com/adrg/xdg/paths_windows.go168
1 files changed, 168 insertions, 0 deletions
diff --git a/vendor/github.com/adrg/xdg/paths_windows.go b/vendor/github.com/adrg/xdg/paths_windows.go
new file mode 100644
index 000000000..722d3e785
--- /dev/null
+++ b/vendor/github.com/adrg/xdg/paths_windows.go
@@ -0,0 +1,168 @@
+package xdg
+
+import (
+ "path/filepath"
+
+ "github.com/adrg/xdg/internal/pathutil"
+ "golang.org/x/sys/windows"
+)
+
+func homeDir() string {
+ return pathutil.KnownFolder(
+ windows.FOLDERID_Profile,
+ []string{"USERPROFILE"},
+ nil,
+ )
+}
+
+func initDirs(home string) {
+ kf := initKnownFolders(home)
+ initBaseDirs(home, kf)
+ initUserDirs(home, kf)
+}
+
+func initBaseDirs(home string, kf *knownFolders) {
+ // Initialize standard directories.
+ baseDirs.dataHome = xdgPath(envDataHome, kf.localAppData)
+ baseDirs.data = xdgPaths(envDataDirs, kf.roamingAppData, kf.programData)
+ baseDirs.configHome = xdgPath(envConfigHome, kf.localAppData)
+ baseDirs.config = xdgPaths(envConfigDirs, kf.programData, kf.roamingAppData)
+ baseDirs.stateHome = xdgPath(envStateHome, kf.localAppData)
+ baseDirs.cacheHome = xdgPath(envCacheHome, filepath.Join(kf.localAppData, "cache"))
+ baseDirs.runtime = xdgPath(envRuntimeDir, kf.localAppData)
+
+ // Initialize non-standard directories.
+ baseDirs.applications = []string{
+ kf.programs,
+ kf.commonPrograms,
+ }
+ baseDirs.fonts = []string{
+ kf.fonts,
+ filepath.Join(kf.localAppData, "Microsoft", "Windows", "Fonts"),
+ }
+}
+
+func initUserDirs(home string, kf *knownFolders) {
+ UserDirs.Desktop = xdgPath(envDesktopDir, kf.desktop)
+ UserDirs.Download = xdgPath(envDownloadDir, kf.downloads)
+ UserDirs.Documents = xdgPath(envDocumentsDir, kf.documents)
+ UserDirs.Music = xdgPath(envMusicDir, kf.music)
+ UserDirs.Pictures = xdgPath(envPicturesDir, kf.pictures)
+ UserDirs.Videos = xdgPath(envVideosDir, kf.videos)
+ UserDirs.Templates = xdgPath(envTemplatesDir, kf.templates)
+ UserDirs.PublicShare = xdgPath(envPublicShareDir, kf.public)
+}
+
+type knownFolders struct {
+ systemDrive string
+ systemRoot string
+ programData string
+ userProfile string
+ userProfiles string
+ roamingAppData string
+ localAppData string
+ desktop string
+ downloads string
+ documents string
+ music string
+ pictures string
+ videos string
+ templates string
+ public string
+ fonts string
+ programs string
+ commonPrograms string
+}
+
+func initKnownFolders(home string) *knownFolders {
+ kf := &knownFolders{
+ userProfile: home,
+ }
+ kf.systemDrive = filepath.VolumeName(pathutil.KnownFolder(
+ windows.FOLDERID_Windows,
+ []string{"SystemDrive", "SystemRoot", "windir"},
+ []string{home, `C:`},
+ )) + string(filepath.Separator)
+ kf.systemRoot = pathutil.KnownFolder(
+ windows.FOLDERID_Windows,
+ []string{"SystemRoot", "windir"},
+ []string{filepath.Join(kf.systemDrive, "Windows")},
+ )
+ kf.programData = pathutil.KnownFolder(
+ windows.FOLDERID_ProgramData,
+ []string{"ProgramData", "ALLUSERSPROFILE"},
+ []string{filepath.Join(kf.systemDrive, "ProgramData")},
+ )
+ kf.userProfiles = pathutil.KnownFolder(
+ windows.FOLDERID_UserProfiles,
+ nil,
+ []string{filepath.Join(kf.systemDrive, "Users")},
+ )
+ kf.roamingAppData = pathutil.KnownFolder(
+ windows.FOLDERID_RoamingAppData,
+ []string{"APPDATA"},
+ []string{filepath.Join(home, "AppData", "Roaming")},
+ )
+ kf.localAppData = pathutil.KnownFolder(
+ windows.FOLDERID_LocalAppData,
+ []string{"LOCALAPPDATA"},
+ []string{filepath.Join(home, "AppData", "Local")},
+ )
+ kf.desktop = pathutil.KnownFolder(
+ windows.FOLDERID_Desktop,
+ nil,
+ []string{filepath.Join(home, "Desktop")},
+ )
+ kf.downloads = pathutil.KnownFolder(
+ windows.FOLDERID_Downloads,
+ nil,
+ []string{filepath.Join(home, "Downloads")},
+ )
+ kf.documents = pathutil.KnownFolder(
+ windows.FOLDERID_Documents,
+ nil,
+ []string{filepath.Join(home, "Documents")},
+ )
+ kf.music = pathutil.KnownFolder(
+ windows.FOLDERID_Music,
+ nil,
+ []string{filepath.Join(home, "Music")},
+ )
+ kf.pictures = pathutil.KnownFolder(
+ windows.FOLDERID_Pictures,
+ nil,
+ []string{filepath.Join(home, "Pictures")},
+ )
+ kf.videos = pathutil.KnownFolder(
+ windows.FOLDERID_Videos,
+ nil,
+ []string{filepath.Join(home, "Videos")},
+ )
+ kf.templates = pathutil.KnownFolder(
+ windows.FOLDERID_Templates,
+ nil,
+ []string{filepath.Join(kf.roamingAppData, "Microsoft", "Windows", "Templates")},
+ )
+ kf.public = pathutil.KnownFolder(
+ windows.FOLDERID_Public,
+ []string{"PUBLIC"},
+ []string{filepath.Join(kf.userProfiles, "Public")},
+ )
+ kf.fonts = pathutil.KnownFolder(
+ windows.FOLDERID_Fonts,
+ nil,
+ []string{filepath.Join(kf.systemRoot, "Fonts")},
+ )
+ kf.programs = pathutil.KnownFolder(
+ windows.FOLDERID_Programs,
+ nil,
+ []string{filepath.Join(kf.roamingAppData, "Microsoft", "Windows", "Start Menu", "Programs")},
+ )
+ kf.commonPrograms = pathutil.KnownFolder(
+ windows.FOLDERID_CommonPrograms,
+ nil,
+ []string{filepath.Join(kf.programData, "Microsoft", "Windows", "Start Menu", "Programs")},
+ )
+
+ return kf
+}