Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion internal/install/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ func resolveDBPaths(opts InitOptions) (loreDB, questDB string, err error) {
return "", "", fmt.Errorf("install: resolve home dir: %w", err)
}
guildDir := filepath.Join(home, ".guild")
if err := os.MkdirAll(guildDir, 0o755); err != nil {
if err := os.MkdirAll(guildDir, 0o700); err != nil {
return "", "", fmt.Errorf("install: create ~/.guild: %w", err)
}
if loreDB == "" {
Expand Down
19 changes: 19 additions & 0 deletions internal/install/init_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,25 @@ func TestTemplate_ContainsSectionMarker(t *testing.T) {
}
}

// ---------------------------------------------------------------------------
// ~/.guild/ directory created with 0o700 (regression for #79)
// ---------------------------------------------------------------------------

func TestResolveDBPaths_GuildDirPerm0700(t *testing.T) {
home := t.TempDir()
t.Setenv("HOME", home)
if _, _, err := resolveDBPaths(InitOptions{}); err != nil {
t.Fatalf("resolveDBPaths: %v", err)
}
info, err := os.Stat(filepath.Join(home, ".guild"))
if err != nil {
t.Fatalf("stat ~/.guild: %v", err)
}
if got := info.Mode().Perm(); got != 0o700 {
t.Errorf("~/.guild perm = %o; want 0o700", got)
}
}

// ---------------------------------------------------------------------------
// No duplicate sections on multiple runs
// ---------------------------------------------------------------------------
Expand Down