Files
2025-08-16 22:15:29 -04:00

58 lines
1.6 KiB
Bash
Executable File

#!/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|<any>' src || true"
# IMPORTANT: single-quote the pattern so '<' is not treated as redirection
scan img_no_alt "grep -RIn '<img[^>]*>' 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" <<JSON
{
"mui_v4_imports": $MUI_CNT,
"ts_suppressions": $TS_SUP_CNT,
"any_usages": $ANY_CNT,
"img_without_alt_grep": $IMG_CNT,
"hooks_usages": $HOOKS_CNT,
"webworker_globals": $WW_CNT
}
JSON
echo "Scan complete: $OUTDIR"