From 847cbbead0e0168eaa013bcfa6e2d0564d57b6a9 Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Mon, 27 Oct 2025 09:42:01 +0100 Subject: [PATCH] chore: do not prompt for init when empty --- internal/config/init.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/internal/config/init.go b/internal/config/init.go index 6807ab25e819b99d899fac711da304c8dc8db595..36742ed96ea91a1cb8834a2ddabfc8dfc8e56f38 100644 --- a/internal/config/init.go +++ b/internal/config/init.go @@ -7,6 +7,8 @@ import ( "slices" "strings" "sync/atomic" + + "github.com/charmbracelet/crush/internal/fsext" ) const ( @@ -59,6 +61,15 @@ func ProjectNeedsInitialization() (bool, error) { return false, nil } + // If the working directory has no non-ignored files, skip initialization step + empty, err := dirHasNoVisibleFiles(cfg.WorkingDir()) + if err != nil { + return false, fmt.Errorf("failed to check if directory is empty: %w", err) + } + if empty { + return false, nil + } + return true, nil } @@ -90,6 +101,15 @@ func contextPathsExist(dir string) (bool, error) { return false, nil } +// dirHasNoVisibleFiles returns true if the directory has no files/dirs after applying ignore rules +func dirHasNoVisibleFiles(dir string) (bool, error) { + files, _, err := fsext.ListDirectory(dir, nil, 1, 1) + if err != nil { + return false, err + } + return len(files) == 0, nil +} + func MarkProjectInitialized() error { cfg := Get() if cfg == nil {