stock-bot/scripts/clean.ps1
2025-06-09 19:16:43 -04:00

182 lines
No EOL
8 KiB
PowerShell

param(
[switch]$modules,
[switch]$dist,
[switch]$cache,
[switch]$tsbuildinfo,
[switch]$all,
[switch]$fresh,
[switch]$force
)
function Remove-DirectoriesByName {
param([string]$Name, [string]$Description)
Write-Host "Removing $Description..." -ForegroundColor Blue
$directories = Get-ChildItem -Path . -Name $Name -Recurse -Directory -ErrorAction SilentlyContinue
if ($directories.Count -gt 0) {
Write-Host "Found $($directories.Count) $Description to remove" -ForegroundColor Gray
$directories | ForEach-Object {
Remove-Item $_ -Recurse -Force -ErrorAction SilentlyContinue
Write-Host " Removed: $_" -ForegroundColor Gray
}
} else {
Write-Host "No $Description found" -ForegroundColor Gray
}
}
function Remove-FilesByPattern {
param([string]$Pattern, [string]$Description)
Write-Host "Removing $Description..." -ForegroundColor Blue
$files = Get-ChildItem -Path . -Name $Pattern -Recurse -File -ErrorAction SilentlyContinue
if ($files.Count -gt 0) {
Write-Host "Found $($files.Count) $Description to remove" -ForegroundColor Gray
$files | ForEach-Object {
Remove-Item $_ -Force -ErrorAction SilentlyContinue
Write-Host " Removed: $_" -ForegroundColor Gray
}
} else {
Write-Host "No $Description found" -ForegroundColor Gray
}
}
Write-Host "Starting cleanup..." -ForegroundColor Yellow
if ($all -or $fresh) {
if (-not $force) {
Write-Host "WARNING: This will remove ALL build artifacts, caches, dependencies, and temporary files!" -ForegroundColor Red
Write-Host "This includes: node_modules, dist, all caches, logs, databases, and lock files" -ForegroundColor Yellow
$confirmation = Read-Host "Are you sure you want to continue? (y/N)"
if ($confirmation -ne 'y' -and $confirmation -ne 'Y') {
Write-Host "Operation cancelled." -ForegroundColor Yellow
exit 0
}
}
Write-Host "=== NUCLEAR CLEAN: Removing EVERYTHING ===" -ForegroundColor Red
# Dependencies and packages
Remove-DirectoriesByName "node_modules" "node_modules directories"
# Build outputs
Remove-DirectoriesByName "dist" "dist directories"
Remove-DirectoriesByName "build" "build directories"
Remove-DirectoriesByName "lib" "lib directories"
Remove-DirectoriesByName "out" "out directories"
Remove-DirectoriesByName ".out" "build output directories"
# Cache directories
Remove-DirectoriesByName ".turbo" "Turborepo cache directories"
Remove-DirectoriesByName ".next" "Next.js cache directories"
Remove-DirectoriesByName ".parcel-cache" "Parcel cache directories"
Remove-DirectoriesByName ".angular" "Angular CLI cache directories"
Remove-DirectoriesByName ".nuxt" "Nuxt.js cache directories"
Remove-DirectoriesByName ".vite" "Vite cache directories"
Remove-DirectoriesByName ".webpack" "Webpack cache directories"
Remove-DirectoriesByName ".rollup.cache" "Rollup cache directories"
# Test and coverage
Remove-DirectoriesByName "coverage" "test coverage directories"
Remove-DirectoriesByName ".nyc_output" "NYC coverage directories"
Remove-DirectoriesByName ".jest" "Jest cache directories"
Remove-DirectoriesByName ".vitest" "Vitest cache directories"
# Storybook
Remove-DirectoriesByName ".storybook-out" "Storybook build directories"
Remove-DirectoriesByName "storybook-static" "Storybook static directories"
# Temporary and log directories
Remove-DirectoriesByName "tmp" "temporary directories"
Remove-DirectoriesByName "temp" "temp directories"
Remove-DirectoriesByName ".tmp" "hidden temp directories"
Remove-DirectoriesByName "logs" "log directories"
Remove-DirectoriesByName ".logs" "hidden log directories"
# Project specific (from .gitignore)
Remove-DirectoriesByName ".data" "data directories"
Remove-DirectoriesByName ".backtest-results" "backtest result directories"
Remove-DirectoriesByName ".old" "old backup directories"
Remove-DirectoriesByName ".mongo" "MongoDB data directories"
Remove-DirectoriesByName ".chat" "chat directories"
Write-Host "Removing lock files..." -ForegroundColor Blue
Remove-Item -Path "bun.lockb" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "package-lock.json" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "yarn.lock" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "pnpm-lock.yaml" -Force -ErrorAction SilentlyContinue
Get-ChildItem -Path . -Name "bun.lockb" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue
Get-ChildItem -Path . -Name "package-lock.json" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue
Get-ChildItem -Path . -Name "yarn.lock" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue
Get-ChildItem -Path . -Name "pnpm-lock.yaml" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue
# TypeScript and build files
Remove-FilesByPattern "*.tsbuildinfo" "TypeScript build info files"
Remove-FilesByPattern ".eslintcache" "ESLint cache files"
Remove-FilesByPattern ".stylelintcache" "Stylelint cache files"
Remove-FilesByPattern ".prettiercache" "Prettier cache files"
Remove-FilesByPattern "*.d.ts" "TypeScript build info files"
# Database files
Remove-FilesByPattern "*.db" "database files"
Remove-FilesByPattern "*.sqlite" "SQLite database files"
Remove-FilesByPattern "*.sqlite3" "SQLite3 database files"
# Log files
Remove-FilesByPattern "*.log" "log files"
Remove-FilesByPattern "npm-debug.log*" "npm debug logs"
Remove-FilesByPattern "yarn-debug.log*" "yarn debug logs"
Remove-FilesByPattern "yarn-error.log*" "yarn error logs"
Remove-FilesByPattern "lerna-debug.log*" "lerna debug logs"
# OS generated files
Remove-FilesByPattern ".DS_Store" "macOS .DS_Store files"
Remove-FilesByPattern "Thumbs.db" "Windows thumbnail files"
Remove-FilesByPattern "ehthumbs.db" "Windows thumbnail cache files"
Remove-FilesByPattern "Desktop.ini" "Windows desktop files"
Write-Host "=== NUCLEAR CLEAN COMPLETE ===" -ForegroundColor Red
Write-Host "Cleanup complete - no need for turbo clean" -ForegroundColor Blue
}
elseif ($modules) {
Remove-DirectoriesByName "node_modules" "node_modules directories"
Write-Host "Removing lock files..." -ForegroundColor Blue
Remove-Item -Path "bun.lockb" -Force -ErrorAction SilentlyContinue
Get-ChildItem -Path . -Name "bun.lockb" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue
}
elseif ($dist) {
Remove-DirectoriesByName "dist" "dist directories"
Remove-DirectoriesByName ".turbo" "Turborepo cache directories"
Remove-DirectoriesByName ".next" "Next.js cache directories"
Remove-DirectoriesByName ".parcel-cache" "Parcel cache directories"
Remove-DirectoriesByName ".angular" "Angular CLI cache directories"
Remove-FilesByPattern "*.tsbuildinfo" "TypeScript build info files"
Remove-FilesByPattern ".eslintcache" "ESLint cache files"
}
elseif ($cache) {
Remove-DirectoriesByName ".turbo" "Turborepo cache directories"
Remove-DirectoriesByName ".next" "Next.js cache directories"
Remove-DirectoriesByName ".parcel-cache" "Parcel cache directories"
Remove-DirectoriesByName ".angular" "Angular CLI cache directories"
Remove-DirectoriesByName "coverage" "test coverage directories"
Remove-DirectoriesByName ".nyc_output" "NYC coverage directories"
Remove-FilesByPattern ".eslintcache" "ESLint cache files"
}
elseif ($tsbuildinfo) {
Remove-FilesByPattern "*.tsbuildinfo" "TypeScript build info files"
}
else {
Write-Host "Running turbo clean..." -ForegroundColor Blue
# Only run turbo clean for the default case
turbo run clean
}
if ($fresh) {
Write-Host "Installing dependencies..." -ForegroundColor Green
bun install
}
Write-Host "Cleanup complete!" -ForegroundColor Green