aboutsummaryrefslogtreecommitdiffstats
path: root/key/file.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-04-11 16:09:20 -0400
committerSam Anthony <sam@samanthony.xyz>2025-04-11 16:09:20 -0400
commit67f29298ca79da839f4fdfe9ffad8d39a703b124 (patch)
tree4844d44bc39ab723e9ec3473255d8c13fdac829e /key/file.go
parentfe46729489026b3c26dda79280e7b876ee09ae37 (diff)
downloadhose-67f29298ca79da839f4fdfe9ffad8d39a703b124.zip
create data directory
Diffstat (limited to 'key/file.go')
-rw-r--r--key/file.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/key/file.go b/key/file.go
index f96190a..676b204 100644
--- a/key/file.go
+++ b/key/file.go
@@ -6,6 +6,8 @@ import (
"github.com/adrg/xdg"
"os"
"path/filepath"
+
+ "git.samanthony.xyz/hose/util"
)
var (
@@ -14,6 +16,8 @@ var (
privKeyFile = filepath.Join(xdg.DataHome, "hose", "privkey")
privKeyFileMode os.FileMode = 0600
+
+ dirMode os.FileMode = 0755
)
// createFile creates a file with the specified permissions and returns it for writing.
@@ -27,11 +31,21 @@ func createFile(name string, mode os.FileMode) (*os.File, error) {
}
// Does not exist; continue;
+ util.Logf("creating file %s with mode %o", name, mode)
+
+ // Create directory.
+ dir := filepath.Dir(name)
+ if err := os.MkdirAll(dir, dirMode); err != nil {
+ return nil, err
+ }
+
+ // Create file.
f, err := os.Create(name)
if err != nil {
return nil, err
}
+ // Set mode.
if err := f.Chmod(mode); err != nil {
f.Close()
_ = os.Remove(name)