254 lines
9.1 KiB
Bash
Executable file
254 lines
9.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Clean script for Stock Bot Trading Platform
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
CYAN='\033[0;36m'
|
|
GRAY='\033[0;37m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Default options
|
|
MODULES=false
|
|
DIST=false
|
|
CACHE=false
|
|
TSBUILDINFO=false
|
|
ALL=false
|
|
FRESH=false
|
|
FORCE=false
|
|
|
|
# Parse command line arguments
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--modules|-m)
|
|
MODULES=true
|
|
shift
|
|
;;
|
|
--dist|-d)
|
|
DIST=true
|
|
shift
|
|
;;
|
|
--cache|-c)
|
|
CACHE=true
|
|
shift
|
|
;;
|
|
--tsbuildinfo|-t)
|
|
TSBUILDINFO=true
|
|
shift
|
|
;;
|
|
--all|-a)
|
|
ALL=true
|
|
shift
|
|
;;
|
|
--fresh|-f)
|
|
FRESH=true
|
|
shift
|
|
;;
|
|
--force)
|
|
FORCE=true
|
|
shift
|
|
;;
|
|
--help|-h)
|
|
echo "Usage: $0 [options]"
|
|
echo " --modules, -m Remove node_modules directories"
|
|
echo " --dist, -d Remove dist directories and build caches"
|
|
echo " --cache, -c Remove cache directories"
|
|
echo " --tsbuildinfo, -t Remove TypeScript build info files"
|
|
echo " --all, -a Remove everything (destructive)"
|
|
echo " --fresh, -f Remove everything and reinstall dependencies"
|
|
echo " --force Skip confirmation prompts"
|
|
echo " --help, -h Show this help message"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
echo "Use --help for usage information"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
remove_directories_by_name() {
|
|
local name="$1"
|
|
local description="$2"
|
|
|
|
echo -e "${BLUE}Removing $description...${NC}"
|
|
|
|
# Find and remove directories
|
|
found_dirs=$(find . -name "$name" -type d 2>/dev/null)
|
|
|
|
if [ -n "$found_dirs" ]; then
|
|
count=$(echo "$found_dirs" | wc -l)
|
|
echo -e "${GRAY}Found $count $description to remove${NC}"
|
|
echo "$found_dirs" | while read -r dir; do
|
|
if [ -d "$dir" ]; then
|
|
rm -rf "$dir" 2>/dev/null
|
|
echo -e "${GRAY} Removed: $dir${NC}"
|
|
fi
|
|
done
|
|
else
|
|
echo -e "${GRAY}No $description found${NC}"
|
|
fi
|
|
}
|
|
|
|
remove_files_by_pattern() {
|
|
local pattern="$1"
|
|
local description="$2"
|
|
|
|
echo -e "${BLUE}Removing $description...${NC}"
|
|
|
|
# Find and remove files
|
|
found_files=$(find . -name "$pattern" -type f 2>/dev/null)
|
|
|
|
if [ -n "$found_files" ]; then
|
|
count=$(echo "$found_files" | wc -l)
|
|
echo -e "${GRAY}Found $count $description to remove${NC}"
|
|
echo "$found_files" | while read -r file; do
|
|
if [ -f "$file" ]; then
|
|
rm -f "$file" 2>/dev/null
|
|
echo -e "${GRAY} Removed: $file${NC}"
|
|
fi
|
|
done
|
|
else
|
|
echo -e "${GRAY}No $description found${NC}"
|
|
fi
|
|
}
|
|
|
|
echo -e "${YELLOW}Starting cleanup...${NC}"
|
|
|
|
if [ "$ALL" = true ] || [ "$FRESH" = true ]; then
|
|
if [ "$FORCE" != true ]; then
|
|
echo -e "${RED}WARNING: This will remove ALL build artifacts, caches, dependencies, and temporary files!${NC}"
|
|
echo -e "${YELLOW}This includes: node_modules, dist, all caches, logs, databases, and lock files${NC}"
|
|
read -p "Are you sure you want to continue? (y/N): " confirmation
|
|
|
|
if [[ "$confirmation" != "y" && "$confirmation" != "Y" ]]; then
|
|
echo -e "${YELLOW}Operation cancelled.${NC}"
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
echo -e "${RED}=== NUCLEAR CLEAN: Removing EVERYTHING ===${NC}"
|
|
|
|
# Dependencies and packages
|
|
remove_directories_by_name "node_modules" "node_modules directories"
|
|
|
|
# Build outputs
|
|
remove_directories_by_name "dist" "dist directories"
|
|
remove_directories_by_name "build" "build directories"
|
|
# remove_directories_by_name "lib" "lib directories"
|
|
remove_directories_by_name "out" "out directories"
|
|
remove_directories_by_name ".out" "build output directories"
|
|
|
|
# Cache directories
|
|
remove_directories_by_name ".turbo" "Turborepo cache directories"
|
|
remove_directories_by_name ".next" "Next.js cache directories"
|
|
remove_directories_by_name ".parcel-cache" "Parcel cache directories"
|
|
remove_directories_by_name ".angular" "Angular CLI cache directories"
|
|
remove_directories_by_name ".nuxt" "Nuxt.js cache directories"
|
|
remove_directories_by_name ".vite" "Vite cache directories"
|
|
remove_directories_by_name ".webpack" "Webpack cache directories"
|
|
remove_directories_by_name ".rollup.cache" "Rollup cache directories"
|
|
|
|
# Test and coverage
|
|
remove_directories_by_name "coverage" "test coverage directories"
|
|
remove_directories_by_name ".nyc_output" "NYC coverage directories"
|
|
remove_directories_by_name ".jest" "Jest cache directories"
|
|
remove_directories_by_name ".vitest" "Vitest cache directories"
|
|
|
|
# Storybook
|
|
remove_directories_by_name ".storybook-out" "Storybook build directories"
|
|
remove_directories_by_name "storybook-static" "Storybook static directories"
|
|
|
|
# Temporary and log directories
|
|
remove_directories_by_name "tmp" "temporary directories"
|
|
remove_directories_by_name "temp" "temp directories"
|
|
remove_directories_by_name ".tmp" "hidden temp directories"
|
|
remove_directories_by_name "logs" "log directories"
|
|
remove_directories_by_name ".logs" "hidden log directories"
|
|
|
|
# Project specific (from .gitignore)
|
|
remove_directories_by_name ".data" "data directories"
|
|
remove_directories_by_name ".backtest-results" "backtest result directories"
|
|
remove_directories_by_name ".old" "old backup directories"
|
|
remove_directories_by_name ".mongo" "MongoDB data directories"
|
|
remove_directories_by_name ".chat" "chat directories"
|
|
|
|
echo -e "${BLUE}Removing lock files...${NC}"
|
|
rm -f bun.lockb package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null
|
|
find . -name "bun.lockb" -type f -delete 2>/dev/null
|
|
find . -name "package-lock.json" -type f -delete 2>/dev/null
|
|
find . -name "yarn.lock" -type f -delete 2>/dev/null
|
|
find . -name "pnpm-lock.yaml" -type f -delete 2>/dev/null
|
|
|
|
# TypeScript and build files
|
|
remove_files_by_pattern "*.tsbuildinfo" "TypeScript build info files"
|
|
remove_files_by_pattern ".eslintcache" "ESLint cache files"
|
|
remove_files_by_pattern ".stylelintcache" "Stylelint cache files"
|
|
remove_files_by_pattern ".prettiercache" "Prettier cache files"
|
|
|
|
# Database files
|
|
remove_files_by_pattern "*.db" "database files"
|
|
remove_files_by_pattern "*.sqlite" "SQLite database files"
|
|
remove_files_by_pattern "*.sqlite3" "SQLite3 database files"
|
|
|
|
# Log files
|
|
remove_files_by_pattern "*.log" "log files"
|
|
remove_files_by_pattern "npm-debug.log*" "npm debug logs"
|
|
remove_files_by_pattern "yarn-debug.log*" "yarn debug logs"
|
|
remove_files_by_pattern "yarn-error.log*" "yarn error logs"
|
|
remove_files_by_pattern "lerna-debug.log*" "lerna debug logs"
|
|
|
|
# OS generated files
|
|
remove_files_by_pattern ".DS_Store" "macOS .DS_Store files"
|
|
remove_files_by_pattern "Thumbs.db" "Windows thumbnail files"
|
|
remove_files_by_pattern "ehthumbs.db" "Windows thumbnail cache files"
|
|
remove_files_by_pattern "Desktop.ini" "Windows desktop files"
|
|
|
|
echo -e "${RED}=== NUCLEAR CLEAN COMPLETE ===${NC}"
|
|
echo -e "${BLUE}Cleanup complete - no need for turbo clean${NC}"
|
|
|
|
elif [ "$MODULES" = true ]; then
|
|
remove_directories_by_name "node_modules" "node_modules directories"
|
|
|
|
echo -e "${BLUE}Removing lock files...${NC}"
|
|
rm -f bun.lockb 2>/dev/null
|
|
find . -name "bun.lockb" -type f -delete 2>/dev/null
|
|
|
|
elif [ "$DIST" = true ]; then
|
|
remove_directories_by_name "dist" "dist directories"
|
|
remove_directories_by_name ".turbo" "Turborepo cache directories"
|
|
remove_directories_by_name ".next" "Next.js cache directories"
|
|
remove_directories_by_name ".parcel-cache" "Parcel cache directories"
|
|
remove_directories_by_name ".angular" "Angular CLI cache directories"
|
|
|
|
remove_files_by_pattern "*.tsbuildinfo" "TypeScript build info files"
|
|
remove_files_by_pattern ".eslintcache" "ESLint cache files"
|
|
|
|
elif [ "$CACHE" = true ]; then
|
|
remove_directories_by_name ".turbo" "Turborepo cache directories"
|
|
remove_directories_by_name ".next" "Next.js cache directories"
|
|
remove_directories_by_name ".parcel-cache" "Parcel cache directories"
|
|
remove_directories_by_name ".angular" "Angular CLI cache directories"
|
|
remove_directories_by_name "coverage" "test coverage directories"
|
|
remove_directories_by_name ".nyc_output" "NYC coverage directories"
|
|
remove_files_by_pattern ".eslintcache" "ESLint cache files"
|
|
|
|
elif [ "$TSBUILDINFO" = true ]; then
|
|
remove_files_by_pattern "*.tsbuildinfo" "TypeScript build info files"
|
|
|
|
else
|
|
echo -e "${BLUE}Running turbo clean...${NC}"
|
|
# Only run turbo clean for the default case
|
|
turbo run clean
|
|
fi
|
|
|
|
if [ "$FRESH" = true ]; then
|
|
echo -e "${GREEN}Installing dependencies...${NC}"
|
|
bun install
|
|
fi
|
|
|
|
echo -e "${GREEN}Cleanup complete!${NC}"
|