-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxdg.go
66 lines (55 loc) · 2.05 KB
/
xdg.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package xdg
import (
"os"
"github.com/sour-is/go-xdg/vfs"
)
var fs vfs.FileSystem = &vfs.OsFS{}
func SetFS(newFS vfs.FileSystem) {
fs = newFS
}
const (
EnvDataHome = Env("XDG_DATA_HOME")
EnvDataDirs = Env("XDG_DATA_DIRS")
EnvConfigHome = Env("XDG_CONFIG_HOME")
EnvConfigDirs = Env("XDG_CONFIG_DIRS")
EnvCacheHome = Env("XDG_CACHE_HOME")
EnvStateHome = Env("XDG_STATE_HOME")
EnvRuntime = Env("XDG_RUNTIME_DIR")
EnvDesktopDir = Env("XDG_DESKTOP_DIR")
EnvDownloadDir = Env("XDG_DOWNLOAD_DIR")
EnvDocumentsDir = Env("XDG_DOCUMENTS_DIR")
EnvMusicDir = Env("XDG_MUSIC_DIR")
EnvPicturesDir = Env("XDG_PICTURES_DIR")
EnvVideosDir = Env("XDG_VIDEOS_DIR")
EnvTemplatesDir = Env("XDG_TEMPLATES_DIR")
EnvPublicShareDir = Env("XDG_PUBLICSHARE_DIR")
)
var (
DataHome Dirs = EnvDefault(EnvDataHome, defaultDataHome)
DataDirs Dirs = EnvDefault(EnvDataDirs, defaultDataDirs)
ConfigHome Dirs = EnvDefault(EnvConfigHome, defaultConfigHome)
ConfigDirs Dirs = EnvDefault(EnvConfigDirs, defaultConfigDirs)
CacheHome Dirs = EnvDefault(EnvCacheHome, defaultCacheHome)
StateHome Dirs = EnvDefault(EnvStateHome, defaultStateHome)
Runtime Dirs = EnvDefault(EnvRuntime, defaultRuntime)
UserHome Dirs = homeFn
UserData Dirs = Merge(DataHome, DataDirs)
UserConfig Dirs = Merge(ConfigHome, ConfigDirs)
UserDesktop Dirs = EnvDefault(EnvDesktopDir, defaultDesktop)
UserDownload Dirs = EnvDefault(EnvDownloadDir, defaultDownload)
UserDocuments Dirs = EnvDefault(EnvDocumentsDir, defaultDocuments)
UserMusic Dirs = EnvDefault(EnvMusicDir, defaultMusic)
UserPictures Dirs = EnvDefault(EnvPicturesDir, defaultPictures)
UserVideos Dirs = EnvDefault(EnvVideosDir, defaultVideos)
UserTemplates Dirs = EnvDefault(EnvTemplatesDir, defaultTemplates)
UserPublic Dirs = EnvDefault(EnvPublicShareDir, defaultPublic)
Applications Dirs = defaultApplicationDirs
Fonts Dirs = defaultFontDirs
)
var homeFn pathFn = func() []Segment {
home, err := os.UserHomeDir()
if err != nil {
return path{Str("")}
}
return path{Str(home)}
}