Skip to main content
Glama
clean.sh3.84 kB
#!/bin/bash # Clean script with configurable directory exclusions # Usage: ./scripts/clean.sh [options] # Options: # --dry-run Show what would be deleted without actually deleting # --verbose Show detailed output # --help Show this help message set -euo pipefail # Maintainable list of directories to skip SKIP_DIRS=( "node_modules" ".git" ".github" "build" "coverage" ".nyc_output" "dist" ".next" ".vscode" ".idea" "tmp" "temp" ) # File patterns to clean (can be customized) CLEAN_PATTERNS=( "*.d.ts" "*.js" "*.js.map" "*.d.ts.map" ) # Files to preserve (exceptions) PRESERVE_PATTERNS=( "*.config.js" "*-types.d.ts" ) # Default options DRY_RUN=false VERBOSE=false HELP=false # Parse command line arguments while [[ $# -gt 0 ]]; do case $1 in --dry-run) DRY_RUN=true shift ;; --verbose) VERBOSE=true shift ;; --help) HELP=true shift ;; *) echo "Unknown option: $1" echo "Use --help for usage information" exit 1 ;; esac done # Show help if [[ "$HELP" == true ]]; then echo "Clean script with configurable directory exclusions" echo "" echo "Usage: $0 [options]" echo "" echo "Options:" echo " --dry-run Show what would be deleted without actually deleting" echo " --verbose Show detailed output" echo " --help Show this help message" echo "" echo "Directories that will be skipped:" printf " %s\n" "${SKIP_DIRS[@]}" echo "" echo "File patterns that will be cleaned:" printf " %s\n" "${CLEAN_PATTERNS[@]}" echo "" echo "File patterns that will be preserved:" printf " %s\n" "${PRESERVE_PATTERNS[@]}" exit 0 fi # Build the find command with directory exclusions build_find_command() { local cmd="find ." # Add directory exclusions for dir in "${SKIP_DIRS[@]}"; do cmd="$cmd \\( -path \"./$dir\" -o -path \"*/$dir\" \\) -prune -o" done # Add file pattern matching cmd="$cmd \\(" for i in "${!CLEAN_PATTERNS[@]}"; do if [[ $i -gt 0 ]]; then cmd="$cmd -o" fi cmd="$cmd -name \"${CLEAN_PATTERNS[$i]}\"" done cmd="$cmd \\) -type f" # Add preserve pattern exclusions for pattern in "${PRESERVE_PATTERNS[@]}"; do cmd="$cmd ! -name \"$pattern\"" done cmd="$cmd -print" echo "$cmd" } # Function to log messages log() { if [[ "$VERBOSE" == true ]]; then echo "$1" fi } # Function to execute or show command execute_or_show() { local cmd="$1" if [[ "$DRY_RUN" == true ]]; then echo "[DRY RUN] Would execute: $cmd" eval "$cmd" | head -10 local count=$(eval "$cmd" | wc -l) echo "[DRY RUN] Found $count files that would be deleted" else log "Executing: $cmd" eval "$cmd" | while read -r file; do if [[ -f "$file" ]]; then log "Removing: $file" rm -f "$file" fi done fi } # Main execution main() { local project_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$project_root" echo "Cleaning generated files in: $project_root" if [[ "$DRY_RUN" == true ]]; then echo "[DRY RUN MODE] - No files will be deleted" fi echo "Skipping directories: ${SKIP_DIRS[*]}" echo "Cleaning patterns: ${CLEAN_PATTERNS[*]}" echo "Preserving patterns: ${PRESERVE_PATTERNS[*]}" echo "" local find_cmd=$(build_find_command) execute_or_show "$find_cmd" if [[ "$DRY_RUN" == false ]]; then echo "Cleanup completed!" fi } # Run main function main "$@"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SocketDev/socket-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server