on main help sign in
chore: do not prompt for init when empty
847cbbeKujtim Hoxha
internal/config/init.go+20
@@ -7,6 +7,8 @@ import (
7 "slices"
7 "slices"
8 "strings"
8 "strings"
9 "sync/atomic"
9 "sync/atomic"
10+
11+ "github.com/charmbracelet/crush/internal/fsext"
10)
12)
11
13
12const (
14const (
@@ -59,6 +61,15 @@ func ProjectNeedsInitialization() (bool, error) {
59 return false, nil
61 return false, nil
60 }
62 }
61
63
64+ // If the working directory has no non-ignored files, skip initialization step
65+ empty, err := dirHasNoVisibleFiles(cfg.WorkingDir())
66+ if err != nil {
67+ return false, fmt.Errorf("failed to check if directory is empty: %w", err)
68+ }
69+ if empty {
70+ return false, nil
71+ }
72+
62 return true, nil
73 return true, nil
63}
74}
64
75
@@ -90,6 +101,15 @@ func contextPathsExist(dir string) (bool, error) {
90 return false, nil
101 return false, nil
91}
102}
92
103
104+// dirHasNoVisibleFiles returns true if the directory has no files/dirs after applying ignore rules
105+func dirHasNoVisibleFiles(dir string) (bool, error) {
106+ files, _, err := fsext.ListDirectory(dir, nil, 1, 1)
107+ if err != nil {
108+ return false, err
109+ }
110+ return len(files) == 0, nil
111+}
112+
93func MarkProjectInitialized() error {
113func MarkProjectInitialized() error {
94 cfg := Get()
114 cfg := Get()
95 if cfg == nil {
115 if cfg == nil {