Depend on xdg for user dirs

This commit is contained in:
2024-04-29 16:21:53 -04:00
parent e71636ee1b
commit 5fafe7ccb7
5 changed files with 65 additions and 10 deletions

18
path.go
View File

@@ -21,13 +21,15 @@ type FileWriter interface {
// ApplicationUserDataFS returns an FS that an application can use to store user
// data files.
func ApplicationUserDataFS (app ApplicationDescription) (*FS, error) {
return appFs(userDataDir, app)
dataDir, err := userDataDir()
if err != nil { return nil, err }
return appFs(dataDir, app)
}
// ApplicationUserConfigFS returns an FS that an application can use to store
// user configuration files.
func ApplicationUserConfigFS (app ApplicationDescription) (*FS, error) {
configDir, err := os.UserConfigDir()
configDir, err := userConfigDir()
if err != nil { return nil, err }
return appFs(configDir, app)
}
@@ -35,7 +37,7 @@ func ApplicationUserConfigFS (app ApplicationDescription) (*FS, error) {
// ApplicationUserCacheFS returns an FS that an application can use to store
// user cache files.
func ApplicationUserCacheFS (app ApplicationDescription) (*FS, error) {
cacheDir, err := os.UserCacheDir()
cacheDir, err := userCacheDir()
if err != nil { return nil, err }
return appFs(cacheDir, app)
}
@@ -50,14 +52,14 @@ func pathErr (op, path string, err error) error {
func appFs (root string, app ApplicationDescription) (*FS, error) {
// remove slashes
appname := app.String()
appname = strings.ReplaceAll(appname, "/", "-")
appname = strings.ReplaceAll(appname, "\\", "-")
appid := app.ID
appid = strings.ReplaceAll(appid, "/", "-")
appid = strings.ReplaceAll(appid, "\\", "-")
path := filepath.Join(root, appname)
path := filepath.Join(root, appid)
// ensure the directory actually exists
err := os.MkdirAll(path, 755)
err := os.MkdirAll(path, 700)
if err != nil { return nil, err }
return &FS { path: path }, nil