From 400dd2944d234c446a5e423de794e60f30c042ba Mon Sep 17 00:00:00 2001 From: L3af Date: Fri, 8 Oct 2021 13:58:07 +1300 Subject: [PATCH] feat: respect xdg directories (#71) * feat: respect xdg directories * fix: move xdg vars to table Co-authored-by: L3af --- hilbish.go | 12 ++++++++++++ main.go | 8 +++++++- vars_linux.go | 12 ++++++------ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/hilbish.go b/hilbish.go index 773affb..2f9b135 100644 --- a/hilbish.go +++ b/hilbish.go @@ -34,6 +34,11 @@ func HilbishLoader(L *lua.LState) int { L.SetField(mod, "host", lua.LString(host)) L.SetField(mod, "home", lua.LString(homedir)) + xdg := L.NewTable() + L.SetField(xdg, "config", lua.LString(confDir)) + L.SetField(xdg, "data", lua.LString(getenv("XDG_DATA_HOME", homedir + "/.local/share/"))) + L.SetField(mod, "xdg", xdg) + L.Push(mod) return 1 @@ -71,3 +76,10 @@ func cwd(L *lua.LState) int { return 1 } +func getenv(key, fallback string) string { + value := os.Getenv(key) + if len(value) == 0 { + return fallback + } + return value +} diff --git a/main.go b/main.go index e60a0bf..8848ae3 100644 --- a/main.go +++ b/main.go @@ -27,6 +27,7 @@ var ( aliases = map[string]string{} homedir string + confDir string curuser *user.User hooks bait.Bait @@ -35,13 +36,18 @@ var ( func main() { homedir, _ = os.UserHomeDir() + confDir = getenv("XDG_CONFIG_HOME", homedir + "/.config") curuser, _ = user.Current() preloadPath = strings.Replace(preloadPath, "~", homedir, 1) sampleConfPath = strings.Replace(sampleConfPath, "~", homedir, 1) if defaultConfDir == "" { // we'll add *our* default if its empty (wont be if its changed comptime) - defaultConfPath = filepath.Join(homedir, "/.hilbishrc.lua") + if _, err := os.Stat(filepath.Join(confDir, "hilbish", "hilbishrc.lua")); os.IsNotExist(err) { + defaultConfPath = filepath.Join(homedir, "/.hilbishrc.lua") + } else { + defaultConfPath = filepath.Join(confDir, "hilbish", "hilbishrc.lua") + } } else { // else do ~ substitution defaultConfPath = filepath.Join(strings.Replace(defaultConfDir, "~", homedir, 1), ".hilbishrc.lua") diff --git a/vars_linux.go b/vars_linux.go index 5125622..cfcabc9 100644 --- a/vars_linux.go +++ b/vars_linux.go @@ -7,12 +7,12 @@ var ( requirePaths = `';./libs/?/?.lua;./libs/?/init.lua;./?/init.lua;./?/?.lua' .. ';/usr/share/hilbish/libs/?/init.lua;' .. ';/usr/share/hilbish/libs/?/?.lua;' - .. hilbish.home .. '/.local/share/hilbish/libs/?/init.lua;' - .. hilbish.home .. '/.local/share/hilbish/libs/?/?.lua;' - .. hilbish.home .. '/.local/share/hilbish/libs/?.lua' - .. hilbish.home .. '/.config/hilbish/?/init.lua' - .. hilbish.home .. '/.config/hilbish/?/?.lua' - .. hilbish.home .. '/.config/hilbish/?.lua'` + .. hilbish.xdg.data .. '/hilbish/libs/?/init.lua;' + .. hilbish.xdg.data .. '/hilbish/libs/?/?.lua;' + .. hilbish.xdg.data .. '/hilbish/libs/?.lua' + .. hilbish.xdg.config .. '/?/init.lua' + .. hilbish.xdg.config .. '/?/?.lua' + .. hilbish.xdg.config .. '/?.lua'` preloadPath = "/usr/share/hilbish/preload.lua" sampleConfPath = "/usr/share/hilbish/.hilbishrc.lua" // Path to default/sample config )