1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-16 20:29:10 +00:00

Optimize CLI: consolidate repairs and standardize flags

This commit is contained in:
Tw93
2026-01-16 15:08:42 +08:00
parent 3240cc7a69
commit e9cddbf4af
5 changed files with 208 additions and 223 deletions

View File

@@ -68,40 +68,40 @@ git checkout windows
Run:
```powershell
mole # Interactive menu
mole clean # Deep cleanup
mole uninstall # Remove apps + leftovers
mole optimize # Refresh caches & services
mole analyze # Visual disk explorer
mole status # Live system health dashboard
mole purge # Clean project build artifacts
mo # Interactive menu
mo clean # Deep cleanup
mo uninstall # Remove apps + leftovers
mo optimize # Refresh caches & services
mo analyze # Visual disk explorer
mo status # Live system health dashboard
mo purge # Clean project build artifacts
mole -ShowHelp # Show help
mole -Version # Show installed version
mo --help # Show help
mo --version # Show installed version
mole clean -DryRun # Preview the cleanup plan
mole clean -Whitelist # Manage protected caches
mole clean -DryRun -Debug # Detailed preview with risk levels
mo clean --dry-run # Preview the cleanup plan
mo clean --whitelist # Manage protected caches
mo clean --dry-run --debug # Detailed preview with risk levels
mole optimize -DryRun # Preview optimization actions
mole optimize -Debug # Run with detailed operation logs
mole purge -Paths # Configure project scan directories
mo optimize --dry-run # Preview optimization actions
mo optimize --debug # Run with detailed operation logs
mo purge --paths # Configure project scan directories
```
## Tips
- **Safety**: Built with strict protections. Preview changes with `mole clean -DryRun`.
- **Safety**: Built with strict protections. Preview changes with `mo clean --dry-run`.
- **Be Careful**: Although safe by design, file deletion is permanent. Please review operations carefully.
- **Debug Mode**: Use `-Debug` for detailed logs (e.g., `mole clean -Debug`). Combine with `-DryRun` for comprehensive preview including risk levels and file details.
- **Debug Mode**: Use `--debug` for detailed logs (e.g., `mo clean --debug`). Combine with `--dry-run` for comprehensive preview including risk levels and file details.
- **Navigation**: Supports arrow keys for TUI navigation.
- **Configuration**: Use `mole clean -Whitelist` to manage protected paths, `mole purge -Paths` to configure scan directories.
- **Configuration**: Use `mo clean --whitelist` to manage protected paths, `mo purge --paths` to configure scan directories.
## Features in Detail
### Deep System Cleanup
```powershell
mole clean
mo clean
```
```
@@ -122,7 +122,7 @@ Space freed: 56.1GB | Free space now: 180.3GB
### Smart App Uninstaller
```powershell
mole uninstall
mo uninstall
```
```
@@ -148,7 +148,7 @@ Space freed: 4.8GB
### System Optimization
```powershell
mole optimize
mo optimize
```
```
@@ -160,6 +160,7 @@ System: 12/32 GB RAM | 280/460 GB Disk (61%) | Uptime 6d
✓ Refresh Windows Search index
✓ Clear thumbnail cache
✓ Optimize startup programs
✓ System repairs (Font/Icon/Store/Search)
====================================================================
System optimization completed
@@ -169,7 +170,7 @@ System optimization completed
### Disk Space Analyzer
```powershell
mole analyze
mo analyze
```
```
@@ -189,7 +190,7 @@ Analyze Disk C:\Users\YourName\Documents | Total: 156.8GB
Real-time dashboard with system health score, hardware info, and performance metrics.
```powershell
mole status
mo status
```
```
@@ -219,7 +220,7 @@ Health score based on CPU, memory, disk, temperature, and I/O load. Color-coded
Clean old build artifacts (`node_modules`, `target`, `build`, `dist`, etc.) from your projects to free up disk space.
```powershell
mole purge
mo purge
```
```
@@ -237,7 +238,7 @@ Select Categories to Clean - 18.5GB (8 selected)
Use with caution: This will permanently delete selected artifacts. Review carefully before confirming. Recent projects — less than 7 days old — are marked and unselected by default.
Custom scan paths can be configured with `mole purge -Paths`.
Custom scan paths can be configured with `mo purge --paths`.
## Installation Options

View File

@@ -4,11 +4,22 @@
#Requires -Version 5.1
[CmdletBinding()]
param(
[Alias('dry-run')]
[switch]$DryRun,
[Alias('system')]
[switch]$System,
[Alias('game-media')]
[switch]$GameMedia,
[Alias('debug')]
[switch]$DebugMode,
[Alias('whitelist')]
[switch]$Whitelist,
[Alias('help')]
[switch]$ShowHelp
)

View File

@@ -4,15 +4,14 @@
#Requires -Version 5.1
[CmdletBinding()]
param(
[Alias('dry-run')]
[switch]$DryRun,
[Alias('debug')]
[switch]$DebugMode,
[switch]$ShowHelp,
# Repair options
[switch]$Repair,
[switch]$Font,
[switch]$Icon,
[switch]$Search,
[switch]$Store
[Alias('help')]
[switch]$ShowHelp
)
Set-StrictMode -Version Latest
@@ -44,36 +43,25 @@ $script:IssuesFixed = 0
function Show-OptimizeHelp {
$esc = [char]27
Write-Host ""
Write-Host "$esc[1;35mMole Optimize$esc[0m - System optimization, health checks, and repairs"
Write-Host "$esc[1;35mMole Optimize$esc[0m - System optimization and repairs"
Write-Host ""
Write-Host "$esc[33mUsage:$esc[0m mole optimize [options]"
Write-Host "$esc[33mUsage:$esc[0m mo optimize [options]"
Write-Host ""
Write-Host "$esc[33mOptions:$esc[0m"
Write-Host " -DryRun Preview changes without applying"
Write-Host " -DebugMode Enable debug logging"
Write-Host " -ShowHelp Show this help message"
Write-Host " --dry-run Preview changes without applying"
Write-Host " --debug Enable debug logging"
Write-Host " --help Show this help message"
Write-Host ""
Write-Host "$esc[33mRepair Options:$esc[0m"
Write-Host " -Repair Run all repairs (Font, Icon, Search, Store)"
Write-Host " -Font Rebuild font cache (fixes font display issues)"
Write-Host " -Icon Rebuild icon cache (fixes missing/corrupt icons)"
Write-Host " -Search Reset Windows Search index (fixes search issues)"
Write-Host " -Store Reset Windows Store cache (fixes Store issues)"
Write-Host "$esc[33mWhat it does:$esc[0m"
Write-Host " - Disk optimization (TRIM/Defrag)"
Write-Host " - Windows Search & Update check"
Write-Host " - Network & DNS optimization"
Write-Host " - System cache cleanup & repairs"
Write-Host " (Font cache, Icon cache, Store cache)"
Write-Host ""
Write-Host "$esc[33mExamples:$esc[0m"
Write-Host " mole optimize # Run standard optimizations"
Write-Host " mole optimize -Repair # Run optimizations + all repairs"
Write-Host " mole optimize -Icon -Font # Run optimizations + specific repairs"
Write-Host " mole optimize -DryRun # Preview what would happen"
Write-Host ""
Write-Host "$esc[33mOptimizations (always run):$esc[0m"
Write-Host " - Disk defragmentation/TRIM (SSD optimization)"
Write-Host " - Windows Search index check"
Write-Host " - DNS cache flush"
Write-Host " - Network optimization"
Write-Host " - Startup program analysis"
Write-Host " - Disk health check"
Write-Host " - Windows Update status"
Write-Host " mo optimize # Run all optimizations"
Write-Host " mo optimize --dry-run # Preview what would happen"
Write-Host ""
}
@@ -757,9 +745,6 @@ function Main {
# Set dry-run mode
$script:DryRun = $DryRun
# Check if any repairs were requested
$runRepairs = $Repair -or $Font -or $Icon -or $Search -or $Store
# Clear screen
Clear-Host
@@ -788,30 +773,17 @@ function Main {
Test-DiskHealth
Test-WindowsUpdate
# Run repairs if requested
if ($runRepairs) {
# Run repairs (consolidated)
Write-Host ""
Write-Host "$esc[1;35m$($script:Icons.Arrow) Repairs$esc[0m"
Write-Host "$esc[34m$($script:Icons.Arrow) System Repairs$esc[0m"
if ($Repair -or $Font) {
Repair-FontCache
}
if ($Repair -or $Icon) {
Repair-IconCache
}
if ($Repair -or $Search) {
Repair-SearchIndex
}
if ($Repair -or $Store) {
Repair-StoreCache
}
}
Repair-SearchIndex
Repair-IconCache
# System file check is slow, ask first (only if not doing repairs)
if (-not $runRepairs -and -not $script:DryRun -and (Test-IsAdmin)) {
# System file check is slow, ask first
if (-not $script:DryRun -and (Test-IsAdmin)) {
Write-Host ""
$runSfc = Read-Host "Run System File Checker? This may take several minutes (y/N)"
if ($runSfc -eq 'y' -or $runSfc -eq 'Y') {

View File

@@ -4,8 +4,13 @@
#Requires -Version 5.1
[CmdletBinding()]
param(
[Alias('debug')]
[switch]$DebugMode,
[Alias('paths')]
[switch]$Paths,
[Alias('help')]
[switch]$ShowHelp
)

View File

@@ -57,37 +57,33 @@ function Show-MainHelp {
Write-Host ""
Write-Host " ${green}COMMANDS:${nc}"
Write-Host ""
Write-Host " ${cyan}clean${nc} Deep system cleanup (caches, temp, logs)"
Write-Host " ${cyan}clean${nc} Deep system cleanup"
Write-Host " ${cyan}uninstall${nc} Smart application uninstaller"
Write-Host " ${cyan}analyze${nc} Visual disk space analyzer"
Write-Host " ${cyan}status${nc} Real-time system monitor"
Write-Host " ${cyan}optimize${nc} System optimization and repairs"
Write-Host " ${cyan}purge${nc} Clean project build artifacts"
Write-Host " ${cyan}analyze${nc} Disk space analyzer"
Write-Host " ${cyan}status${nc} System monitor"
Write-Host " ${cyan}purge${nc} Clean project artifacts"
Write-Host ""
Write-Host " ${green}OPTIONS:${nc}"
Write-Host ""
Write-Host " ${cyan}-Version${nc} Show version information"
Write-Host " ${cyan}-ShowHelp${nc} Show this help message"
Write-Host " ${cyan}--version${nc} Show version information"
Write-Host " ${cyan}--help${nc} Show this help message"
Write-Host ""
Write-Host " ${green}EXAMPLES:${nc}"
Write-Host ""
Write-Host " ${gray}mole${nc} ${gray}# Interactive menu${nc}"
Write-Host " ${gray}mole clean${nc} ${gray}# Deep cleanup${nc}"
Write-Host " ${gray}mole clean -DryRun${nc} ${gray}# Preview cleanup${nc}"
Write-Host " ${gray}mole uninstall${nc} ${gray}# Uninstall apps${nc}"
Write-Host " ${gray}mole analyze${nc} ${gray}# Disk analyzer${nc}"
Write-Host " ${gray}mole status${nc} ${gray}# System monitor${nc}"
Write-Host " ${gray}mole optimize${nc} ${gray}# Optimize system${nc}"
Write-Host " ${gray}mole optimize -Repair${nc} ${gray}# Optimize + all repairs${nc}"
Write-Host " ${gray}mole optimize -Icon${nc} ${gray}# Optimize + rebuild icons${nc}"
Write-Host " ${gray}mole purge${nc} ${gray}# Clean dev artifacts${nc}"
Write-Host " ${gray}mo${nc} ${gray}# Interactive menu${nc}"
Write-Host " ${gray}mo clean${nc} ${gray}# Deep cleanup${nc}"
Write-Host " ${gray}mo clean --dry-run${nc} ${gray}# Preview cleanup${nc}"
Write-Host " ${gray}mo optimize${nc} ${gray}# Optimize system${nc}"
Write-Host " ${gray}mo optimize --dry-run${nc} ${gray}# Preview optimization${nc}"
Write-Host " ${gray}mo uninstall${nc} ${gray}# Uninstall apps${nc}"
Write-Host ""
Write-Host " ${green}ENVIRONMENT:${nc}"
Write-Host ""
Write-Host " ${cyan}MOLE_DRY_RUN=1${nc} Preview without changes"
Write-Host " ${cyan}MOLE_DEBUG=1${nc} Enable debug output"
Write-Host ""
Write-Host " ${gray}Run '${nc}mole <command> -ShowHelp${gray}' for command-specific help${nc}"
Write-Host " ${gray}Run '${nc}mo <command> --help${gray}' for command-specific help${nc}"
Write-Host ""
}
@@ -103,6 +99,12 @@ function Show-MainMenu {
Command = "clean"
Icon = $script:Icons.Trash
}
@{
Name = "Optimize"
Description = "Optimization & repairs"
Command = "optimize"
Icon = $script:Icons.Arrow
}
@{
Name = "Uninstall"
Description = "Remove applications"
@@ -121,12 +123,6 @@ function Show-MainMenu {
Command = "status"
Icon = $script:Icons.Solid
}
@{
Name = "Optimize"
Description = "Optimization & repairs"
Command = "optimize"
Icon = $script:Icons.Arrow
}
@{
Name = "Purge"
Description = "Clean dev artifacts"
@@ -159,7 +155,7 @@ function Invoke-MoleCommand {
if (-not (Test-Path $scriptPath)) {
Write-MoleError "Unknown command: $CommandName"
Write-Host ""
Write-Host "Run 'mole -ShowHelp' for available commands"
Write-Host "Run 'mo --help' for available commands"
return
}
@@ -175,13 +171,13 @@ function Invoke-MoleCommand {
# Remove surrounding quotes if present
$cleanArg = $arg.Trim("'`"")
if ($cleanArg -match '^-(\w+)$') {
# It's a switch parameter (e.g., -DryRun)
if ($cleanArg -match '^-{1,2}([\w-]+)$') {
# It's a switch parameter (e.g., -DryRun or --dry-run)
$paramName = $Matches[1]
$splatParams[$paramName] = $true
}
elseif ($cleanArg -match '^-(\w+)[=:](.+)$') {
# It's a named parameter with value (e.g., -Name=Value or -Name:Value)
elseif ($cleanArg -match '^-{1,2}([\w-]+)[=:](.+)$') {
# It's a named parameter with value (e.g., --name=value)
$paramName = $Matches[1]
$paramValue = $Matches[2].Trim("'`"")
$splatParams[$paramName] = $paramValue