Add real JavaScript module status reporting
pauljd/davidson-ci: Davidson CI / quality (push) Successful in 13s

This commit is contained in:
2026-09-08 17:25:12 +01:00
parent e326bce2fc
commit 87daeb3d9d
+45 -37
View File
@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
set -euo pipefail set -u
echo "====================================" echo "===================================="
echo " Davidson CI - JavaScript/TypeScript" echo " Davidson CI - JavaScript/TypeScript"
@@ -9,8 +9,13 @@ JS_COUNT="${DAVIDSON_JS_COUNT:-0}"
TS_COUNT="${DAVIDSON_TS_COUNT:-0}" TS_COUNT="${DAVIDSON_TS_COUNT:-0}"
TOTAL=$((JS_COUNT + TS_COUNT)) TOTAL=$((JS_COUNT + TS_COUNT))
set_status() {
echo "DAVIDSON_JS_STATUS=$1" >> "${GITHUB_ENV:-/dev/null}"
}
if [ "$TOTAL" -eq 0 ]; then if [ "$TOTAL" -eq 0 ]; then
echo "No JavaScript or TypeScript detected - skipping module" echo "No JavaScript or TypeScript detected - skipping module"
set_status "SKIP"
exit 0 exit 0
fi fi
@@ -19,45 +24,41 @@ echo "JavaScript files: $JS_COUNT"
echo "TypeScript files: $TS_COUNT" echo "TypeScript files: $TS_COUNT"
echo echo
# ------------------------- FAIL=0
# Dependencies
# -------------------------
echo "→ Node dependencies" echo "→ Node dependencies"
if [ -f package-lock.json ]; then if [ -f package-lock.json ]; then
npm ci if ! npm ci; then
FAIL=1
fi
elif [ -f package.json ]; then elif [ -f package.json ]; then
echo "package.json found but no package-lock.json" echo "package.json found but no package-lock.json"
else else
echo "No package.json found" echo "No package.json found"
fi fi
# -------------------------
# JavaScript syntax
# -------------------------
echo echo
echo "→ JavaScript syntax" echo "→ JavaScript syntax"
if [ "$JS_COUNT" -gt 0 ]; then if [ "$JS_COUNT" -gt 0 ]; then
while IFS= read -r -d '' file; do
echo "Checking $file"
if ! node --check "$file"; then
FAIL=1
fi
done < <(
find . \ find . \
-type f \ -type f \
\( -name "*.js" -o -name "*.mjs" -o -name "*.cjs" \) \ \( -name "*.js" -o -name "*.mjs" -o -name "*.cjs" \) \
-not -path "./node_modules/*" \ -not -path "./node_modules/*" \
-print0 | -print0
while IFS= read -r -d '' file; do )
echo "Checking $file"
node --check "$file"
done
else else
echo "No JavaScript files - skipping syntax check" echo "No JavaScript files - skipping syntax check"
fi fi
# -------------------------
# TypeScript
# -------------------------
echo echo
echo "→ TypeScript" echo "→ TypeScript"
@@ -65,9 +66,13 @@ if [ "$TS_COUNT" -gt 0 ]; then
if [ -f package.json ] && \ if [ -f package.json ] && \
node -e "let p=require('./package.json'); process.exit(p.scripts?.typecheck ? 0 : 1)" node -e "let p=require('./package.json'); process.exit(p.scripts?.typecheck ? 0 : 1)"
then then
npm run typecheck if ! npm run typecheck; then
FAIL=1
fi
elif [ -x node_modules/.bin/tsc ]; then elif [ -x node_modules/.bin/tsc ]; then
npx tsc --noEmit if ! npx tsc --noEmit; then
FAIL=1
fi
else else
echo "TypeScript detected but no TypeScript checker configured" echo "TypeScript detected but no TypeScript checker configured"
fi fi
@@ -75,50 +80,53 @@ else
echo "No TypeScript files - skipping" echo "No TypeScript files - skipping"
fi fi
# -------------------------
# ESLint
# -------------------------
echo echo
echo "→ ESLint" echo "→ ESLint"
if [ -f package.json ] && \ if [ -f package.json ] && \
node -e "let p=require('./package.json'); process.exit(p.scripts?.lint ? 0 : 1)" node -e "let p=require('./package.json'); process.exit(p.scripts?.lint ? 0 : 1)"
then then
npm run lint if ! npm run lint; then
FAIL=1
fi
else else
echo "No lint script - skipping" echo "No lint script - skipping"
fi fi
# -------------------------
# Tests
# -------------------------
echo echo
echo "→ JavaScript tests" echo "→ JavaScript tests"
if [ -f package.json ] && \ if [ -f package.json ] && \
node -e "let p=require('./package.json'); process.exit(p.scripts?.test ? 0 : 1)" node -e "let p=require('./package.json'); process.exit(p.scripts?.test ? 0 : 1)"
then then
npm test if ! npm test; then
FAIL=1
fi
else else
echo "No test script - skipping" echo "No test script - skipping"
fi fi
# -------------------------
# Build
# -------------------------
echo echo
echo "→ Frontend build" echo "→ Frontend build"
if [ -f package.json ] && \ if [ -f package.json ] && \
node -e "let p=require('./package.json'); process.exit(p.scripts?.build ? 0 : 1)" node -e "let p=require('./package.json'); process.exit(p.scripts?.build ? 0 : 1)"
then then
npm run build if ! npm run build; then
FAIL=1
fi
else else
echo "No build script - skipping" echo "No build script - skipping"
fi fi
echo if [ "$FAIL" -eq 0 ]; then
echo "JavaScript/TypeScript module completed successfully" set_status "PASS"
echo
echo "JavaScript/TypeScript module completed successfully"
exit 0
else
set_status "FAIL"
echo
echo "JavaScript/TypeScript module failed"
exit 1
fi