diff --git a/test/clean.sh b/test/clean.sh index 9198aeccbb433..53b419c6006cd 100755 --- a/test/clean.sh +++ b/test/clean.sh @@ -1,10 +1,65 @@ #!/bin/bash set -e +# Parse command line arguments +FORCE_ENV=false +while [[ $# -gt 0 ]]; do + case $1 in + --force-env|-f) + FORCE_ENV=true + shift + ;; + --help|-h) + echo "Usage: $0 [OPTIONS]" + echo "" + echo "Options:" + echo " --force-env, -f Force update .env file from example.env" + echo " --help, -h Show this help message" + exit 0 + ;; + *) + echo "Unknown option: $1" + echo "Use --help for usage information" + exit 1 + ;; + esac +done + echo " ๐Ÿงน Cleaning up Optimism test environment..." +# Stop Docker containers before handling .env file +# This ensures docker-compose has access to the current .env file echo " ๐Ÿ“ฆ Stopping Docker containers..." -[ -f .env ] && docker compose down +if [ -f .env ]; then + docker compose down 2>/dev/null || true +elif [ -f example.env ]; then + # If .env doesn't exist but example.env does, temporarily use it for docker compose down + cp example.env .env.tmp + docker compose --env-file .env.tmp down 2>/dev/null || true + rm -f .env.tmp +fi + +# Handle .env file +if [ "$FORCE_ENV" = true ]; then + echo " ๐Ÿ”„ Force updating .env from example.env..." + if [ -f example.env ]; then + cp example.env .env + echo " โœ… .env has been force updated from example.env" + else + echo " โš ๏ธ example.env not found, skipping .env update" + fi +elif [ ! -f .env ]; then + echo " ๐Ÿ“ .env file not found, creating from example.env..." + if [ -f example.env ]; then + cp example.env .env + echo " โœ… .env created from example.env" + else + echo " โš ๏ธ example.env not found, please create .env manually" + fi +else + echo " โœ“ .env file exists, keeping current configuration" + echo " ๐Ÿ’ก Use --force-env flag to update .env from example.env" +fi echo " ๐Ÿ—‘๏ธ Removing generated files..." rm -rf data