diff --git a/README.md b/README.md index d697eb4..cc24e12 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ mo optimize --dry-run # Preview optimization actions mo optimize --debug # Run with detailed operation logs mo optimize --whitelist # Manage protected optimization rules mo purge --paths # Configure project scan directories -mo analyze --exclude-volumes # Skip external drives under /Volumes in overview +mo analyze /Volumes # Analyze external drives only ``` ## Tips @@ -150,7 +150,7 @@ Use `mo optimize --whitelist` to exclude specific optimizations. ### Disk Space Analyzer -Use `--exclude-volumes` to skip external drives under `/Volumes` in the overview (faster when many volumes are attached). +By default, overview skips external drives mounted under `/Volumes` for faster startup. To inspect external drives, run `mo analyze /Volumes` (or a specific mount path). ```bash $ mo analyze diff --git a/cmd/analyze/cache.go b/cmd/analyze/cache.go index f55f47b..872a8d5 100644 --- a/cmd/analyze/cache.go +++ b/cmd/analyze/cache.go @@ -332,8 +332,8 @@ func removeOverviewSnapshot(path string) { } // prefetchOverviewCache warms overview cache in background. -func prefetchOverviewCache(ctx context.Context, excludeVolumes bool) { - entries := createOverviewEntries(excludeVolumes) +func prefetchOverviewCache(ctx context.Context) { + entries := createOverviewEntries() var needScan []string for _, entry := range entries { diff --git a/cmd/analyze/main.go b/cmd/analyze/main.go index 50d346f..5b92437 100644 --- a/cmd/analyze/main.go +++ b/cmd/analyze/main.go @@ -4,7 +4,6 @@ package main import ( "context" - "flag" "fmt" "io/fs" "os" @@ -123,7 +122,6 @@ type model struct { largeMultiSelected map[string]bool // Track multi-selected large files by path (safer than index) totalFiles int64 // Total files found in current/last scan lastTotalFiles int64 // Total files from previous scan (for progress bar) - excludeVolumes bool // Skip /Volumes in overview (--exclude-volumes) } func (m model) inOverviewMode() bool { @@ -131,13 +129,9 @@ func (m model) inOverviewMode() bool { } func main() { - fs := flag.NewFlagSet("analyze", flag.ContinueOnError) - excludeVolumes := fs.Bool("exclude-volumes", false, "exclude /Volumes (external drives) from overview") - _ = fs.Parse(os.Args[1:]) - target := os.Getenv("MO_ANALYZE_PATH") - if target == "" && fs.NArg() > 0 { - target = fs.Arg(0) + if target == "" && len(os.Args) > 1 { + target = os.Args[1] } var abs string @@ -159,16 +153,16 @@ func main() { // Warm overview cache in background. prefetchCtx, prefetchCancel := context.WithTimeout(context.Background(), 30*time.Second) defer prefetchCancel() - go prefetchOverviewCache(prefetchCtx, *excludeVolumes) + go prefetchOverviewCache(prefetchCtx) - p := tea.NewProgram(newModel(abs, isOverview, *excludeVolumes), tea.WithAltScreen()) + p := tea.NewProgram(newModel(abs, isOverview), tea.WithAltScreen()) if _, err := p.Run(); err != nil { fmt.Fprintf(os.Stderr, "analyzer error: %v\n", err) os.Exit(1) } } -func newModel(path string, isOverview bool, excludeVolumes bool) model { +func newModel(path string, isOverview bool) model { var filesScanned, dirsScanned, bytesScanned int64 currentPath := &atomic.Value{} currentPath.Store("") @@ -195,7 +189,6 @@ func newModel(path string, isOverview bool, excludeVolumes bool) model { overviewScanningSet: make(map[string]bool), multiSelected: make(map[string]bool), largeMultiSelected: make(map[string]bool), - excludeVolumes: excludeVolumes, } if isOverview { @@ -221,7 +214,7 @@ func newModel(path string, isOverview bool, excludeVolumes bool) model { return m } -func createOverviewEntries(excludeVolumes bool) []dirEntry { +func createOverviewEntries() []dirEntry { home := os.Getenv("HOME") entries := []dirEntry{} @@ -240,11 +233,6 @@ func createOverviewEntries(excludeVolumes bool) []dirEntry { dirEntry{Name: "System Library", Path: "/Library", IsDir: true, Size: -1}, ) - // Include Volumes only when real mounts exist and not excluded by --exclude-volumes. - if !excludeVolumes && hasUsefulVolumeMounts("/Volumes") { - entries = append(entries, dirEntry{Name: "Volumes", Path: "/Volumes", IsDir: true, Size: -1}) - } - return entries } @@ -275,7 +263,7 @@ func hasUsefulVolumeMounts(path string) bool { } func (m *model) hydrateOverviewEntries() { - m.entries = createOverviewEntries(m.excludeVolumes) + m.entries = createOverviewEntries() if m.overviewSizeCache == nil { m.overviewSizeCache = make(map[string]int64) } diff --git a/mole b/mole index bb1f517..5d62bf3 100755 --- a/mole +++ b/mole @@ -223,7 +223,7 @@ show_help() { printf " %s%-28s%s %s\n" "$GREEN" "mo optimize --dry-run" "$NC" "Preview optimization" printf " %s%-28s%s %s\n" "$GREEN" "mo optimize --whitelist" "$NC" "Manage protected items" printf " %s%-28s%s %s\n" "$GREEN" "mo purge --paths" "$NC" "Configure scan directories" - printf " %s%-28s%s %s\n" "$GREEN" "mo analyze --exclude-volumes" "$NC" "Skip external drives in overview" + printf " %s%-28s%s %s\n" "$GREEN" "mo analyze /Volumes" "$NC" "Analyze external drives only" printf " %s%-28s%s %s\n" "$GREEN" "mo update --force" "$NC" "Force reinstall latest version" echo printf "%s%s%s\n" "$BLUE" "OPTIONS" "$NC"