Initial project
This commit is contained in:
114
scripts/clean.sh
Executable file
114
scripts/clean.sh
Executable file
@@ -0,0 +1,114 @@
|
||||
#!/usr/bin/env bash
|
||||
# Deep clean script — supports platform filtering
|
||||
#
|
||||
# Usage:
|
||||
# bash scripts/clean.sh # clean all platforms (default)
|
||||
# bash scripts/clean.sh android # clean Android only
|
||||
# bash scripts/clean.sh ios # clean iOS only
|
||||
# bash scripts/clean.sh macos # clean macOS only
|
||||
# bash scripts/clean.sh windows # clean Windows only
|
||||
# bash scripts/clean.sh android ios # clean multiple platforms
|
||||
#
|
||||
# Via melos:
|
||||
# melos run clean:deep # all platforms
|
||||
# melos run clean:deep -- android # Android only
|
||||
# melos run clean:deep -- ios macos # iOS + macOS
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
APP_DIR="$ROOT_DIR/apps/im_app"
|
||||
|
||||
# ── Parse platforms ────────────────────────────────────────────────────────
|
||||
ALL_PLATFORMS=(android ios macos windows)
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
TARGETS=("${ALL_PLATFORMS[@]}")
|
||||
else
|
||||
TARGETS=("$@")
|
||||
fi
|
||||
|
||||
should_clean() {
|
||||
local platform="$1"
|
||||
for t in "${TARGETS[@]}"; do
|
||||
[[ "$t" == "$platform" ]] && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
echo "==> Platforms: ${TARGETS[*]}"
|
||||
|
||||
# ── Flutter & Dart (always runs) ───────────────────────────────────────────
|
||||
echo "==> flutter clean..."
|
||||
cd "$APP_DIR"
|
||||
flutter clean
|
||||
|
||||
echo "==> Removing .dart_tool directories..."
|
||||
while IFS= read -r -d '' dir; do
|
||||
echo " rm -rf $dir"
|
||||
rm -rf "$dir"
|
||||
done < <(find "$ROOT_DIR" -type d -name ".dart_tool" -not -path "*/.git/*" -print0)
|
||||
|
||||
echo "==> Removing generated Dart files (*.g.dart / *.freezed.dart / *.mocks.dart)..."
|
||||
while IFS= read -r -d '' file; do
|
||||
echo " rm $file"
|
||||
rm "$file"
|
||||
done < <(find "$ROOT_DIR" -type f \
|
||||
\( -name "*.g.dart" -o -name "*.freezed.dart" -o -name "*.mocks.dart" \) \
|
||||
-not -path "*/.git/*" -not -path "*/build/*" -print0)
|
||||
|
||||
# ── Android ────────────────────────────────────────────────────────────────
|
||||
if should_clean android; then
|
||||
echo "==> Cleaning Android Gradle..."
|
||||
cd "$APP_DIR/android"
|
||||
chmod +x gradlew
|
||||
./gradlew clean
|
||||
fi
|
||||
|
||||
# ── iOS ────────────────────────────────────────────────────────────────────
|
||||
if should_clean ios; then
|
||||
IOS_DIR="$APP_DIR/ios"
|
||||
if [ -d "$IOS_DIR" ]; then
|
||||
echo "==> Cleaning iOS Pods..."
|
||||
rm -rf "$IOS_DIR/Pods"
|
||||
rm -f "$IOS_DIR/Podfile.lock"
|
||||
rm -rf "$IOS_DIR/.symlinks"
|
||||
if command -v pod &>/dev/null; then
|
||||
cd "$IOS_DIR" && pod cache clean --all
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── macOS ──────────────────────────────────────────────────────────────────
|
||||
if should_clean macos; then
|
||||
MACOS_DIR="$APP_DIR/macos"
|
||||
if [ -d "$MACOS_DIR" ]; then
|
||||
echo "==> Cleaning macOS Pods..."
|
||||
rm -rf "$MACOS_DIR/Pods"
|
||||
rm -f "$MACOS_DIR/Podfile.lock"
|
||||
if command -v pod &>/dev/null; then
|
||||
cd "$MACOS_DIR" && pod cache clean --all
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── Windows ────────────────────────────────────────────────────────────────
|
||||
if should_clean windows; then
|
||||
WIN_DIR="$APP_DIR/windows"
|
||||
if [ -d "$WIN_DIR" ]; then
|
||||
echo "==> Cleaning Windows build artifacts..."
|
||||
rm -rf "$WIN_DIR/flutter/ephemeral"
|
||||
find "$WIN_DIR" -name "CMakeCache.txt" -delete
|
||||
find "$WIN_DIR" -name "CMakeFiles" -type d -exec rm -rf {} + 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── Re-fetch dependencies ──────────────────────────────────────────────────
|
||||
echo "==> Running dart pub get at workspace root..."
|
||||
cd "$ROOT_DIR"
|
||||
dart pub get
|
||||
|
||||
echo ""
|
||||
echo "Deep clean complete. Platforms cleaned: ${TARGETS[*]}"
|
||||
echo "Next: melos run gen"
|
||||
Reference in New Issue
Block a user