@@ -7,6 +7,8 @@ import (
9 "sync/atomic"
9 "sync/atomic"
11+ "github.com/charmbracelet/crush/internal/fsext"
@@ -59,6 +61,15 @@ func ProjectNeedsInitialization() (bool, error) {
59 return false, nil
61 return false, nil
64+ // If the working directory has no non-ignored files, skip initialization step
65+ empty, err := dirHasNoVisibleFiles(cfg.WorkingDir())
67+ return false, fmt.Errorf("failed to check if directory is empty: %w", err)
62 return true, nil
73 return true, nil
@@ -90,6 +101,15 @@ func contextPathsExist(dir string) (bool, error) {
90 return false, nil
101 return false, nil
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)
110+ return len(files) == 0, nil
93func MarkProjectInitialized() error {
113func MarkProjectInitialized() error {
94 cfg := Get()
114 cfg := Get()
95 if cfg == nil {
115 if cfg == nil {