diff --git a/scripts/report.sh b/scripts/report.sh index 3b97b02..975bf30 100755 --- a/scripts/report.sh +++ b/scripts/report.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -euo pipefail +set -u SUMMARY_FILE="${GITEA_STEP_SUMMARY:-${GITHUB_STEP_SUMMARY:-}}" @@ -13,54 +13,94 @@ JS_COUNT="${DAVIDSON_JS_COUNT:-0}" TS_COUNT="${DAVIDSON_TS_COUNT:-0}" CSS_COUNT="${DAVIDSON_CSS_COUNT:-0}" +PHP_STATUS="${DAVIDSON_PHP_STATUS:-UNKNOWN}" +JS_STATUS="${DAVIDSON_JS_STATUS:-UNKNOWN}" +CSS_STATUS="${DAVIDSON_CSS_STATUS:-UNKNOWN}" + +COMPOSER_AUDIT="${DAVIDSON_COMPOSER_AUDIT:-UNKNOWN}" +NPM_AUDIT="${DAVIDSON_NPM_AUDIT:-UNKNOWN}" +SEMGREP="${DAVIDSON_SEMGREP:-UNKNOWN}" +TRIVY_VULN="${DAVIDSON_TRIVY_VULN:-UNKNOWN}" +TRIVY_SECRET="${DAVIDSON_TRIVY_SECRET:-UNKNOWN}" +SECURITY_STATUS="${DAVIDSON_SECURITY_STATUS:-UNKNOWN}" + +status_icon() { + case "$1" in + PASS) + echo "✅ PASS" + ;; + FAIL) + echo "❌ FAIL" + ;; + SKIP) + echo "➖ SKIP" + ;; + *) + echo "⚪ UNKNOWN" + ;; + esac +} + +OVERALL="PASS" + +for status in \ + "$PHP_STATUS" \ + "$JS_STATUS" \ + "$CSS_STATUS" \ + "$SECURITY_STATUS" +do + if [ "$status" = "FAIL" ]; then + OVERALL="FAIL" + fi +done + { - echo "# Davidson CI Report" + echo "# 🛡️ Davidson CI Report" echo + echo "## Project Detection" echo - - if [ "$PHP_COUNT" -gt 0 ]; then - echo "- ✅ PHP: $PHP_COUNT files" - else - echo "- ➖ PHP: not detected" - fi - - if [ "$JS_COUNT" -gt 0 ]; then - echo "- ✅ JavaScript: $JS_COUNT files" - else - echo "- ➖ JavaScript: not detected" - fi - - if [ "$TS_COUNT" -gt 0 ]; then - echo "- ✅ TypeScript: $TS_COUNT files" - else - echo "- ➖ TypeScript: not detected" - fi - - if [ "$CSS_COUNT" -gt 0 ]; then - echo "- ✅ CSS: $CSS_COUNT files" - else - echo "- ➖ CSS: not detected" - fi + echo "| Language | Files |" + echo "|---|---:|" + echo "| PHP | $PHP_COUNT |" + echo "| JavaScript | $JS_COUNT |" + echo "| TypeScript | $TS_COUNT |" + echo "| CSS | $CSS_COUNT |" echo echo "## Quality" echo - echo "- ✅ Language checks completed" - echo "- ✅ Tests/lint/build completed where configured" + echo "| Module | Status |" + echo "|---|---|" + echo "| PHP | $(status_icon "$PHP_STATUS") |" + echo "| JavaScript / TypeScript | $(status_icon "$JS_STATUS") |" + echo "| CSS | $(status_icon "$CSS_STATUS") |" echo echo "## Security" echo - echo "- ✅ Composer audit" - echo "- ✅ npm audit" - echo "- ✅ Semgrep" - echo "- ✅ Trivy vulnerability scan" - echo "- ✅ Trivy secret scan" + echo "| Check | Status |" + echo "|---|---|" + echo "| Composer audit | $(status_icon "$COMPOSER_AUDIT") |" + echo "| npm audit | $(status_icon "$NPM_AUDIT") |" + echo "| Semgrep | $(status_icon "$SEMGREP") |" + echo "| Trivy vulnerabilities | $(status_icon "$TRIVY_VULN") |" + echo "| Trivy secrets | $(status_icon "$TRIVY_SECRET") |" echo - echo "## Result" + echo "---" echo - echo "✅ **Davidson CI completed successfully**" + + if [ "$OVERALL" = "PASS" ]; then + echo "## ✅ Davidson CI Passed" + echo + echo "No blocking issues were detected." + else + echo "## ❌ Davidson CI Failed" + echo + echo "One or more checks require attention. Open the failed job steps for details." + fi } >> "$SUMMARY_FILE" + +echo "Davidson CI report generated" \ No newline at end of file