From 818358a8a14ea3cd0faf62b8fbe83001d4f0ee40 Mon Sep 17 00:00:00 2001 From: sneak Date: Wed, 17 Dec 2025 15:20:56 -0800 Subject: [PATCH] Fix pathIsHidden treating base directory as hidden, print banner to stdout - pathIsHidden(".") was returning true, causing freshen to skip entire directory tree when dotfiles excluded - Banner now prints directly to stdout to avoid log prefix artifacts --- internal/cli/entry_test.go | 8 ++++---- internal/cli/freshen.go | 9 ++++----- internal/cli/mfer.go | 4 +++- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/internal/cli/entry_test.go b/internal/cli/entry_test.go index 52c08ca..98d19df 100644 --- a/internal/cli/entry_test.go +++ b/internal/cli/entry_test.go @@ -173,10 +173,10 @@ func TestBannerOutput(t *testing.T) { exitCode := RunWithOptions(opts) assert.Equal(t, 0, exitCode) - // Banner ASCII art should be in stderr (via log.Info) - stderr := opts.Stderr.(*bytes.Buffer).String() - assert.Contains(t, stderr, "___") - assert.Contains(t, stderr, "\\") + // Banner ASCII art should be in stdout + stdout := opts.Stdout.(*bytes.Buffer).String() + assert.Contains(t, stdout, "___") + assert.Contains(t, stdout, "\\") } func TestUnknownCommand(t *testing.T) { diff --git a/internal/cli/freshen.go b/internal/cli/freshen.go index 5ef4f75..c2a5aa9 100644 --- a/internal/cli/freshen.go +++ b/internal/cli/freshen.go @@ -372,12 +372,11 @@ func addExistingToBuilder(b *mfer.Builder, entry *mfer.MFFilePath) { // pathIsHidden checks if a path contains hidden components func pathIsHidden(p string) bool { - for _, part := range filepath.SplitList(p) { - if len(part) > 0 && part[0] == '.' { - return true - } + // "." is not hidden, it's the current directory + if p == "." { + return false } - // Also check each path component + // Check each path component for p != "" && p != "." && p != "/" { base := filepath.Base(p) if len(base) > 0 && base[0] == '.' { diff --git a/internal/cli/mfer.go b/internal/cli/mfer.go index 657bab5..0125060 100644 --- a/internal/cli/mfer.go +++ b/internal/cli/mfer.go @@ -41,7 +41,9 @@ const banner = ` \__\/ \__\/ \__\/ \__\/` func (mfa *CLIApp) printBanner() { - log.Info(banner) + if log.GetLevel() <= log.InfoLevel { + _, _ = fmt.Fprintln(mfa.Stdout, banner) + } } // VersionString returns the version and git revision formatted for display.