aboutsummaryrefslogtreecommitdiff
path: root/internal/config
diff options
context:
space:
mode:
Diffstat (limited to 'internal/config')
-rw-r--r--internal/config/load.go6
-rw-r--r--internal/config/load_test.go11
2 files changed, 17 insertions, 0 deletions
diff --git a/internal/config/load.go b/internal/config/load.go
index f6eaeae..cd4d97c 100644
--- a/internal/config/load.go
+++ b/internal/config/load.go
@@ -91,3 +91,9 @@ func (c *Config) LogFile() string {
}
return filepath.Join(xdg.StateHome(), "krino", "krino.log")
}
+
+// LockFile is where a directory's lock lives while a run is active:
+// $XDG_STATE_HOME/krino/<name>.lock, beside the log (spec ยง3).
+func (c *Config) LockFile(name string) string {
+ return filepath.Join(xdg.StateHome(), "krino", name+".lock")
+}
diff --git a/internal/config/load_test.go b/internal/config/load_test.go
index be72fc0..1cc3ac9 100644
--- a/internal/config/load_test.go
+++ b/internal/config/load_test.go
@@ -104,3 +104,14 @@ func TestDefaultFileAndLogFile(t *testing.T) {
t.Errorf("LogFile() = %q", got)
}
}
+
+func TestLockFile(t *testing.T) {
+ h := t.TempDir()
+ t.Setenv("HOME", h)
+ t.Setenv("XDG_STATE_HOME", "")
+ c := &Config{}
+ want := filepath.Join(h, ".local", "state", "krino", "dl.lock")
+ if got := c.LockFile("dl"); got != want {
+ t.Errorf("LockFile = %q, want %q", got, want)
+ }
+}