gonk.git

commit d8e170d3d2747051f630f3bc39983a7ec98a66d3

Author: Adam <git@apiote.xyz>

use xdg directories

 gonk.go | 36 +++++++++++++++++++++++++++++++++---


diff --git a/gonk.go b/gonk.go
index 5ca078d3ae5ada0f41265fe6d08122abc4ed430c..501d7f8f0b6fc6c463b1d50aeb4f04e30619c7f1 100644
--- a/gonk.go
+++ b/gonk.go
@@ -44,6 +44,30 @@ type HonkSet struct {
 	Honks []Honk
 }
 
+func dataHome() string {
+	xdgDataHome, _ := os.LookupEnv("XDG_DATA_HOME")
+	if xdgDataHome == "" {
+		user, err := os.UserHomeDir()
+		if err != nil {
+			panic(err)
+		}
+		xdgDataHome = user + "/.local/share"
+	}
+	return xdgDataHome + "/gonk"
+}
+
+func configHome() string {
+	xdgConfigHome, _ := os.LookupEnv("XDG_CONFIG_HOME")
+	if xdgConfigHome == "" {
+		user, err := os.UserHomeDir()
+		if err != nil {
+			panic(err)
+		}
+		xdgConfigHome = user + "/.config"
+	}
+	return xdgConfigHome + "/gonk"
+}
+
 func setUpColour(colourful bool) Colour {
 	if colourful {
 		return Colour{
@@ -222,7 +246,13 @@ 		colourful = false
 	}
 	colour := setUpColour(colourful)
 
-	data, err := ioutil.ReadFile("account")
+	err := os.MkdirAll(dataHome(), 0755)
+	if err != nil {
+		fmt.Println("while making home directory: %v", err)
+		os.Exit(1)
+	}
+
+	data, err := ioutil.ReadFile(configHome() + "/account")
 	for _, line := range strings.Split(string(data), "\n") {
 		if !strings.Contains(line, "=") {
 			continue
@@ -245,7 +275,7 @@ 		os.Exit(1)
 	}
 
 	token := gettoken(server, username, password)
-	data, err = ioutil.ReadFile("after")
+	data, err = ioutil.ReadFile(dataHome() + "/after")
 	if err != nil {
 		log.Printf("[WARN] File reading error: %s\nShowing all honks", err)
 	}
@@ -258,6 +288,6 @@ 	after, broken = showHonks(honks, after, colour)
 	if !broken {
 		fmt.Println(colour.Cyan + "## No more honks" + colour.Reset)
 	}
-	ioutil.WriteFile("after", []byte(fmt.Sprintf("%d", after)), 0644)
+	ioutil.WriteFile(dataHome()+"/after", []byte(fmt.Sprintf("%d", after)), 0644)
 	logout(server, token)
 }