#!/bin/bash # script/clean: Clean up development artifacts and caches # # Removes build artifacts, test caches, and accidental package installations. # Use --minimal for critical cleanup only, --deep to also remove __pycache__. # # Usage: # ./scripts/clean [--minimal|--deep] # # Examples: # ./scripts/clean # Standard cleanup (recommended) # ./scripts/clean --deep # Also remove __pycache__ # ./scripts/clean --minimal # Only critical issues (.egg-info) set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$SCRIPT_DIR/.." # shellcheck source=scripts/.lib/output.sh source "$SCRIPT_DIR/.lib/output.sh" MINIMAL_MODE=false DEEP_MODE=false if [[ ${1:-} == --minimal ]]; then MINIMAL_MODE=true elif [[ ${1:-} == --deep ]]; then DEEP_MODE=true fi if [[ $MINIMAL_MODE == false ]]; then log_header "Cleaning development artifacts" fi # Clean up accidental package installation (always, even in minimal mode) if [[ -d tibber_prices.egg-info ]]; then if [[ $MINIMAL_MODE == false ]]; then log_step "Removing tibber_prices.egg-info" fi rm -rf tibber_prices.egg-info fi # Uninstall if accidentally installed (always, even in minimal mode) # Try both pip and uv pip for maximum compatibility PACKAGE_INSTALLED=false if pip show tibber_prices >/dev/null 2>&1 || uv pip show tibber_prices >/dev/null 2>&1; then PACKAGE_INSTALLED=true if [[ $MINIMAL_MODE == false ]]; then log_step "Uninstalling accidentally installed package" fi # Use regular pip (cleaner output, always works in venv) pip uninstall -y tibber_prices >/dev/null 2>&1 || true # Also try uv pip as fallback uv pip uninstall tibber_prices >/dev/null 2>&1 || true fi # Exit early if minimal mode if [[ $MINIMAL_MODE == true ]]; then exit 0 fi # Clean pytest cache if [[ -d .pytest_cache ]]; then log_step "Removing .pytest_cache" rm -rf .pytest_cache fi # Clean coverage files if [[ -f .coverage ]]; then log_step "Removing .coverage" rm -f .coverage fi if [[ -f coverage.xml ]]; then log_step "Removing coverage.xml" rm -f coverage.xml fi # Clean ruff cache if [[ -d .ruff_cache ]]; then log_step "Removing .ruff_cache" rm -rf .ruff_cache fi # Optional: Clean __pycache__ (normally not needed, but useful for troubleshooting) if [[ $DEEP_MODE == true ]]; then log_step "Deep clean: Removing all __pycache__ directories" find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true log_step "Deep clean: Removing all .pyc files" find . -type f -name "*.pyc" -delete 2>/dev/null || true fi log_success "Cleanup complete" if [[ $DEEP_MODE == false ]]; then echo "" log_info "Tip: Use './scripts/clean --deep' to also remove __pycache__ directories" log_step "(normally not needed - __pycache__ speeds up Home Assistant startup)" echo "" log_info "Tip: Use './scripts/setup/reset' to reset config/ to fresh HA installation" log_step "(removes everything, restores configuration.yaml, re-runs setup)" fi