File: app_unix.go

package info (click to toggle)
golang-github-apparentlymart-go-userdirs 0.0~git20200915.b0c018a-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 184 kB
  • sloc: makefile: 2
file content (42 lines) | stat: -rw-r--r-- 905 bytes parent folder | download
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
// +build linux aix dragonfly freebsd netbsd openbsd solaris

package userdirs

import (
	"path/filepath"
	"strings"

	"github.com/apparentlymart/go-userdirs/xdgbase"
)

func supportedOS() bool {
	return true
}

func forApp(name string, vendor string, bundleID string) Dirs {
	// We use XDG conventions on Linux and other Unixes without their own special rules

	subDir := appDirName(name)

	ret := xdgDirs()
	for i, dir := range ret.ConfigDirs {
		ret.ConfigDirs[i] = filepath.Join(dir, subDir)
	}
	for i, dir := range ret.DataDirs {
		ret.DataDirs[i] = filepath.Join(dir, subDir)
	}
	ret.CacheDir = filepath.Join(ret.CacheDir, subDir)
	return ret
}

func xdgDirs() Dirs {
	return Dirs{
		ConfigDirs: xdgbase.ConfigDirs(),
		DataDirs:   xdgbase.DataDirs(),
		CacheDir:   xdgbase.CacheHome(),
	}
}

func appDirName(appName string) string {
	return strings.ToLower(strings.ReplaceAll(appName, " ", "-"))
}