Add modular JavaScript and TypeScript checks
pauljd/davidson-ci: Davidson CI / detect (push) Successful in 2s

This commit is contained in:
2026-09-08 17:17:29 +01:00
parent ab4052d1f9
commit 91143d09b6
+124
View File
@@ -0,0 +1,124 @@
#!/bin/bash
set -euo pipefail
echo "===================================="
echo " Davidson CI - JavaScript/TypeScript"
echo "===================================="
JS_COUNT="${DAVIDSON_JS_COUNT:-0}"
TS_COUNT="${DAVIDSON_TS_COUNT:-0}"
TOTAL=$((JS_COUNT + TS_COUNT))
if [ "$TOTAL" -eq 0 ]; then
echo "No JavaScript or TypeScript detected - skipping module"
exit 0
fi
echo
echo "JavaScript files: $JS_COUNT"
echo "TypeScript files: $TS_COUNT"
echo
# -------------------------
# Dependencies
# -------------------------
echo "→ Node dependencies"
if [ -f package-lock.json ]; then
npm ci
elif [ -f package.json ]; then
echo "package.json found but no package-lock.json"
else
echo "No package.json found"
fi
# -------------------------
# JavaScript syntax
# -------------------------
echo
echo "→ JavaScript syntax"
if [ "$JS_COUNT" -gt 0 ]; then
find . \
-type f \
\( -name "*.js" -o -name "*.mjs" -o -name "*.cjs" \) \
-not -path "./node_modules/*" \
-print0 |
while IFS= read -r -d '' file; do
echo "Checking $file"
node --check "$file"
done
else
echo "No JavaScript files - skipping syntax check"
fi
# -------------------------
# TypeScript
# -------------------------
echo
echo "→ TypeScript"
if [ "$TS_COUNT" -gt 0 ]; then
if [ -f package.json ] && \
node -e "let p=require('./package.json'); process.exit(p.scripts?.typecheck ? 0 : 1)"
then
npm run typecheck
elif [ -x node_modules/.bin/tsc ]; then
npx tsc --noEmit
else
echo "TypeScript detected but no TypeScript checker configured"
fi
else
echo "No TypeScript files - skipping"
fi
# -------------------------
# ESLint
# -------------------------
echo
echo "→ ESLint"
if [ -f package.json ] && \
node -e "let p=require('./package.json'); process.exit(p.scripts?.lint ? 0 : 1)"
then
npm run lint
else
echo "No lint script - skipping"
fi
# -------------------------
# Tests
# -------------------------
echo
echo "→ JavaScript tests"
if [ -f package.json ] && \
node -e "let p=require('./package.json'); process.exit(p.scripts?.test ? 0 : 1)"
then
npm test
else
echo "No test script - skipping"
fi
# -------------------------
# Build
# -------------------------
echo
echo "→ Frontend build"
if [ -f package.json ] && \
node -e "let p=require('./package.json'); process.exit(p.scripts?.build ? 0 : 1)"
then
npm run build
else
echo "No build script - skipping"
fi
echo
echo "JavaScript/TypeScript module completed successfully"