Add real JavaScript module status reporting
pauljd/davidson-ci: Davidson CI / quality (push) Successful in 13s
pauljd/davidson-ci: Davidson CI / quality (push) Successful in 13s
This commit is contained in:
+47
-39
@@ -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
|
||||||
find . \
|
|
||||||
-type f \
|
|
||||||
\( -name "*.js" -o -name "*.mjs" -o -name "*.cjs" \) \
|
|
||||||
-not -path "./node_modules/*" \
|
|
||||||
-print0 |
|
|
||||||
while IFS= read -r -d '' file; do
|
while IFS= read -r -d '' file; do
|
||||||
echo "Checking $file"
|
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
|
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
|
||||||
Reference in New Issue
Block a user