#!/usr/bin/env bash set -euo pipefail OUTDIR="reports/phase1-$(date +%Y%m%d-%H%M%S)" mkdir -p "$OUTDIR" # Helpers scan () { local name="$1"; shift echo "== $name ==" ( bash -lc "$*" ) > "$OUTDIR/$name.txt" || true } count () { local file="$1" if [[ -f "$file" ]]; then wc -l < "$file"; else echo 0; fi } # Scans scan mui_v4_imports "grep -RInE \"from ['\\\"]@material-ui/|require\\(['\\\"]@material-ui/\" src || true" scan ts_suppressions "grep -RInE '@ts-nocheck|@ts-ignore' src || true" scan any_usage "grep -RInE ': any\\b|\\bas any\\b|' src || true" # IMPORTANT: single-quote the pattern so '<' is not treated as redirection scan img_no_alt "grep -RIn ']*>' src | grep -v 'alt=' || true" scan hooks_usage "grep -RInE 'useDispatch\\(|useSelector\\(|useEffect\\(|useCallback\\(' src || true" scan webworker_globals "grep -RInE '\\bself\\b|\\bXMLHttpRequest\\b|\\bfetch\\b|\\bURL\\b' src/webworkers 2>/dev/null || true" # Top files by any-usage if [[ -f "$OUTDIR/any_usage.txt" ]]; then awk -F: '{print $1}' "$OUTDIR/any_usage.txt" | sort | uniq -c | sort -nr > "$OUTDIR/any_usage_topfiles.txt" fi # Summary JSON MUI_CNT=$(count "$OUTDIR/mui_v4_imports.txt") TS_SUP_CNT=$(count "$OUTDIR/ts_suppressions.txt") ANY_CNT=$(count "$OUTDIR/any_usage.txt") IMG_CNT=$(count "$OUTDIR/img_no_alt.txt") HOOKS_CNT=$(count "$OUTDIR/hooks_usage.txt") WW_CNT=$(count "$OUTDIR/webworker_globals.txt") cat > "$OUTDIR/summary.json" <