forked from Qortal/q-blog
58 lines
1.6 KiB
Bash
Executable File
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"
|