initial commit

This commit is contained in:
xuu
2023-07-12 12:43:25 -06:00
commit 80dbf39736
34 changed files with 3664 additions and 0 deletions

30
xdg/path_darwin.go Normal file
View 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
View 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
View 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
View 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
}