aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/internal.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/internal/internal.go b/internal/internal.go
new file mode 100644
index 0000000..7127932
--- /dev/null
+++ b/internal/internal.go
@@ -0,0 +1,34 @@
+// SPDX-FileCopyrightText: 2025 M. Shulhan <ms@kilabit.info>
+// SPDX-License-Identifier: GPL-3.0-only
+
+package internal
+
+import (
+ "fmt"
+ "os"
+ "path/filepath"
+)
+
+// CacheFile return the path to cache file under [os.UserCacheDir] +
+// "jarink" directory.
+// This variable defined here so the test file can override it.
+var CacheFile = DefaultCacheFile
+
+func DefaultCacheFile() (cacheFile string, err error) {
+ var logp = `DefaultCacheFile`
+ var cacheDir string
+
+ cacheDir, err = os.UserCacheDir()
+ if err != nil {
+ return ``, fmt.Errorf(`%s: %w`, logp, err)
+ }
+ cacheDir = filepath.Join(cacheDir, `jarink`)
+
+ err = os.MkdirAll(cacheDir, 0700)
+ if err != nil {
+ return ``, fmt.Errorf(`%s: %w`, logp, err)
+ }
+
+ cacheFile = filepath.Join(cacheDir, `cache.json`)
+ return cacheFile, nil
+}