initial commit
This commit is contained in:
30
xdg/path_darwin.go
Normal file
30
xdg/path_darwin.go
Normal file
@@ -0,0 +1,30 @@
|
||||
//go:build darwin
|
||||
// +build darwin
|
||||
|
||||
package xdg
|
||||
|
||||
func literal(name string) string {
|
||||
return "$" + name
|
||||
}
|
||||
|
||||
const (
|
||||
defaultDataHome = "~/Library/Application Support"
|
||||
defaultDataDirs = "/Library/Application Support"
|
||||
defaultConfigHome = "~/Library/Preferences"
|
||||
defaultConfigDirs = "/Library/Preferences"
|
||||
defaultCacheHome = "~/Library/Caches"
|
||||
defaultStateHome = "~/Library/Caches"
|
||||
defaultRuntime = "~/Library/Application Support"
|
||||
|
||||
defaultDesktop = "~/Desktop"
|
||||
defaultDownload = "~/Downloads"
|
||||
defaultDocuments = "~/Documents"
|
||||
defaultMusic = "~/Music"
|
||||
defaultPictures = "~/Pictures"
|
||||
defaultVideos = "~/Videos"
|
||||
defaultTemplates = "~/Templates"
|
||||
defaultPublic = "~/Public"
|
||||
|
||||
defaultApplicationDirs = "~/Applications:/Applications"
|
||||
defaultFontDirs = "~/Library/Fonts:/Library/Fonts:/System/Library/Fonts:/Network/Library/Fonts"
|
||||
)
|
||||
30
xdg/path_linux.go
Normal file
30
xdg/path_linux.go
Normal file
@@ -0,0 +1,30 @@
|
||||
//go:build linux
|
||||
// +build linux
|
||||
|
||||
package xdg
|
||||
|
||||
func literal(name string) string {
|
||||
return "$" + name
|
||||
}
|
||||
|
||||
const (
|
||||
defaultDataHome = "~/.local/share"
|
||||
defaultDataDirs = "/usr/local/share:/usr/share"
|
||||
defaultConfigHome = "~/.config"
|
||||
defaultConfigDirs = "/etc/xdg"
|
||||
defaultCacheHome = "~/.local/cache"
|
||||
defaultStateHome = "~/.local/state"
|
||||
defaultRuntime = "/run/user/$UID"
|
||||
|
||||
defaultDesktop = "~/Desktop"
|
||||
defaultDownload = "~/Downloads"
|
||||
defaultDocuments = "~/Documents"
|
||||
defaultMusic = "~/Music"
|
||||
defaultPictures = "~/Pictures"
|
||||
defaultVideos = "~/Videos"
|
||||
defaultTemplates = "~/Templates"
|
||||
defaultPublic = "~/Public"
|
||||
|
||||
defaultApplicationDirs = "~/Applications:/Applications"
|
||||
defaultFontDirs = "~/.local/share/fonts:/usr/local/share/fonts:/usr/share/fonts:~/.fonts"
|
||||
)
|
||||
30
xdg/path_windows.go
Normal file
30
xdg/path_windows.go
Normal file
@@ -0,0 +1,30 @@
|
||||
//go:build windows
|
||||
// +build windows
|
||||
|
||||
package xdg
|
||||
|
||||
func literal(name string) string {
|
||||
return "%" + name + "%"
|
||||
}
|
||||
|
||||
const (
|
||||
defaultDataHome = `%LOCALAPPDATA%`
|
||||
defaultDataDirs = `%APPDATA%\Roaming;%ProgramData%`
|
||||
defaultConfigHome = `%LOCALAPPDATA%`
|
||||
defaultConfigDirs = `%ProgramData%`
|
||||
defaultCacheHome = `%LOCALAPPDATA%\cache`
|
||||
defaultStateHome = `%LOCALAPPDATA%\state`
|
||||
defaultRuntime = `%LOCALAPPDATA%`
|
||||
|
||||
defaultDesktop = `%USERPROFILE%\Desktop`
|
||||
defaultDownload = `%USERPROFILE%\Downloads`
|
||||
defaultDocuments = `%USERPROFILE%\Documents`
|
||||
defaultMusic = `%USERPROFILE%\Music`
|
||||
defaultPictures = `%USERPROFILE%\Pictures`
|
||||
defaultVideos = `%USERPROFILE%\Videos`
|
||||
defaultTemplates = `%USERPROFILE%\Templates`
|
||||
defaultPublic = `%USERPROFILE%\Public`
|
||||
|
||||
defaultApplicationDirs = `%APPDATA%\Roaming\Microsoft\Windows\Start Menu\Programs`
|
||||
defaultFontDirs = `%windir%\Fonts;%LOCALAPPDATA%\Microsoft\Windows\Fonts`
|
||||
)
|
||||
52
xdg/xdg.go
Normal file
52
xdg/xdg.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package xdg
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
EnvDataHome = setENV("XDG_DATA_HOME", defaultDataHome)
|
||||
EnvDataDirs = setENV("XDG_DATA_DIRS", defaultDataDirs)
|
||||
EnvConfigHome = setENV("XDG_CONFIG_HOME", defaultConfigHome)
|
||||
EnvConfigDirs = setENV("XDG_CONFIG_DIRS", defaultConfigDirs)
|
||||
EnvCacheHome = setENV("XDG_CACHE_HOME", defaultCacheHome)
|
||||
EnvStateHome = setENV("XDG_STATE_HOME", defaultStateHome)
|
||||
EnvRuntime = setENV("XDG_RUNTIME_DIR", defaultRuntime)
|
||||
EnvDesktopDir = setENV("XDG_DESKTOP_DIR", defaultDesktop)
|
||||
EnvDownloadDir = setENV("XDG_DOWNLOAD_DIR", defaultDownload)
|
||||
EnvDocumentsDir = setENV("XDG_DOCUMENTS_DIR", defaultDocuments)
|
||||
EnvMusicDir = setENV("XDG_MUSIC_DIR", defaultMusic)
|
||||
EnvPicturesDir = setENV("XDG_PICTURES_DIR", defaultPictures)
|
||||
EnvVideosDir = setENV("XDG_VIDEOS_DIR", defaultVideos)
|
||||
EnvTemplatesDir = setENV("XDG_TEMPLATES_DIR", defaultTemplates)
|
||||
EnvPublicShareDir = setENV("XDG_PUBLICSHARE_DIR", defaultPublic)
|
||||
EnvApplicationsDir = setENV("XDG_APPLICATIONS_DIR", defaultApplicationDirs)
|
||||
EnvFontsDir = setENV("XDG_FONTS_DIR", defaultFontDirs)
|
||||
)
|
||||
|
||||
func setENV(name, value string) string {
|
||||
if _, ok := os.LookupEnv(name); !ok {
|
||||
os.Setenv(name, value)
|
||||
}
|
||||
return literal(name)
|
||||
}
|
||||
func Get(base, suffix string) string {
|
||||
paths := strings.Split(os.ExpandEnv(base), string(os.PathListSeparator))
|
||||
for i, path := range paths {
|
||||
if strings.HasPrefix(path, "~") {
|
||||
path = strings.Replace(path, "~", getHome(), 1)
|
||||
}
|
||||
paths[i] = os.ExpandEnv(filepath.Join(path, suffix))
|
||||
}
|
||||
return strings.Join(paths, string(os.PathListSeparator))
|
||||
}
|
||||
|
||||
func getHome() string {
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return "."
|
||||
}
|
||||
return home
|
||||
}
|
||||
Reference in New Issue
Block a user