summaryrefslogtreecommitdiff
path: root/config/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'config/config.go')
-rw-r--r--config/config.go39
1 files changed, 32 insertions, 7 deletions
diff --git a/config/config.go b/config/config.go
index d2512d2..f5d43ec 100644
--- a/config/config.go
+++ b/config/config.go
@@ -297,13 +297,38 @@ func parseCredential(cred, command string) (string, error) {
return u.String(), nil
}
-var defaultDirs []string = []string{
- path.Join(xdg.ConfigHome(), "aerc"),
- path.Join(xdg.DataHome(), "aerc"),
- "/usr/local/share/aerc",
- "/usr/share/aerc",
+// Set at build time
+var shareDir string
+
+func buildDefaultDirs() []string {
+ var defaultDirs []string
+
+ prefixes := []string{
+ xdg.ConfigHome(),
+ xdg.DataHome(),
+ }
+
+ // Add XDG_CONFIG_HOME and XDG_DATA_HOME
+ for _, v := range prefixes {
+ if v != "" {
+ defaultDirs = append(defaultDirs, path.Join(v, "aerc"))
+ }
+ }
+
+ // Add custom buildtime shareDir
+ if shareDir != "" && shareDir != "/usr/local/share/aerc" {
+ defaultDirs = append(defaultDirs, shareDir)
+ }
+
+ // Add fixed fallback locations
+ defaultDirs = append(defaultDirs, "/usr/local/share/aerc")
+ defaultDirs = append(defaultDirs, "/usr/share/aerc")
+
+ return defaultDirs
}
+var searchDirs = buildDefaultDirs()
+
func installTemplate(root, name string) error {
var err error
if _, err = os.Stat(root); os.IsNotExist(err) {
@@ -313,7 +338,7 @@ func installTemplate(root, name string) error {
}
}
var data []byte
- for _, dir := range defaultDirs {
+ for _, dir := range searchDirs {
data, err = ioutil.ReadFile(path.Join(dir, name))
if err == nil {
break
@@ -464,7 +489,7 @@ func (config *AercConfig) LoadConfig(file *ini.File) error {
}
// append default paths to template-dirs and styleset-dirs
- for _, dir := range defaultDirs {
+ for _, dir := range searchDirs {
config.Ui.StyleSetDirs = append(
config.Ui.StyleSetDirs, path.Join(dir, "stylesets"),
)