From 87daeb3d9dac5166a78dc3a6df5338680592187d Mon Sep 17 00:00:00 2001 From: Pauljd Date: Tue, 8 Sep 2026 17:25:12 +0100 Subject: [PATCH] Add real JavaScript module status reporting --- modules/javascript.sh | 86 +++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 39 deletions(-) diff --git a/modules/javascript.sh b/modules/javascript.sh index 5fedbd7..03ae52e 100755 --- a/modules/javascript.sh +++ b/modules/javascript.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -euo pipefail +set -u echo "====================================" echo " Davidson CI - JavaScript/TypeScript" @@ -9,8 +9,13 @@ JS_COUNT="${DAVIDSON_JS_COUNT:-0}" TS_COUNT="${DAVIDSON_TS_COUNT:-0}" TOTAL=$((JS_COUNT + TS_COUNT)) +set_status() { + echo "DAVIDSON_JS_STATUS=$1" >> "${GITHUB_ENV:-/dev/null}" +} + if [ "$TOTAL" -eq 0 ]; then echo "No JavaScript or TypeScript detected - skipping module" + set_status "SKIP" exit 0 fi @@ -19,45 +24,41 @@ echo "JavaScript files: $JS_COUNT" echo "TypeScript files: $TS_COUNT" echo -# ------------------------- -# Dependencies -# ------------------------- +FAIL=0 echo "→ Node dependencies" if [ -f package-lock.json ]; then - npm ci + if ! npm ci; then + FAIL=1 + fi 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 + + if ! node --check "$file"; then + FAIL=1 + fi + done < <( + find . \ + -type f \ + \( -name "*.js" -o -name "*.mjs" -o -name "*.cjs" \) \ + -not -path "./node_modules/*" \ + -print0 + ) else echo "No JavaScript files - skipping syntax check" fi -# ------------------------- -# TypeScript -# ------------------------- - echo echo "→ TypeScript" @@ -65,9 +66,13 @@ 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 + if ! npm run typecheck; then + FAIL=1 + fi elif [ -x node_modules/.bin/tsc ]; then - npx tsc --noEmit + if ! npx tsc --noEmit; then + FAIL=1 + fi else echo "TypeScript detected but no TypeScript checker configured" fi @@ -75,50 +80,53 @@ 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 + if ! npm run lint; then + FAIL=1 + fi 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 + if ! npm test; then + FAIL=1 + fi 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 + if ! npm run build; then + FAIL=1 + fi else echo "No build script - skipping" fi -echo -echo "JavaScript/TypeScript module completed successfully" +if [ "$FAIL" -eq 0 ]; then + 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 \ No newline at end of file