ISO Build Log
${LOG_HTML}
#!/bin/sh # Build Clawdie-ISO and publish a styled HTML build log to the website. # # Usage: # sudo ./scripts/build-and-log.sh [build.sh args...] # # Publishes to: /usr/local/www/clawdie/docs/iso-build-log.html # URL: https://clawdie.si/docs/iso-build-log.html # # A timestamped archive copy is also kept alongside so past builds # are not overwritten: # /usr/local/www/clawdie/docs/iso-build-YYYY-MM-DD.html set -e SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)" TMP_DIR="${SCRIPT_DIR}/tmp" WEBROOT="/usr/local/www/clawdie/docs" BUILD_DATE="$(date '+%Y-%m-%d')" BUILD_TS="$(date '+%Y-%m-%d %H:%M:%S %Z')" LOG_TMP="${TMP_DIR}/clawdie-iso-build-$$.log" HTML_LATEST="${WEBROOT}/iso-build-log.html" HTML_DATED="${WEBROOT}/iso-build-${BUILD_DATE}.html" mkdir -p "${WEBROOT}" "${TMP_DIR}" echo "=== Clawdie-ISO Build ===" echo "Started: ${BUILD_TS}" echo "Log: ${LOG_TMP}" echo "Output: ${HTML_LATEST}" echo "" # ── Run the build, capture everything ──────────────────────────────────── START_EPOCH="$(date +%s)" set +e cd "${SCRIPT_DIR}" ./build.sh "$@" 2>&1 | tee "${LOG_TMP}" BUILD_EXIT=$? set -e END_EPOCH="$(date +%s)" DURATION_S=$(( END_EPOCH - START_EPOCH )) DURATION_M=$(( DURATION_S / 60 )) DURATION_S=$(( DURATION_S % 60 )) DURATION="${DURATION_M}m ${DURATION_S}s" if [ "${BUILD_EXIT}" -eq 0 ]; then STATUS_TEXT="SUCCESS" STATUS_CLASS="success" else STATUS_TEXT="FAILED (exit ${BUILD_EXIT})" STATUS_CLASS="failure" fi # ── Escape HTML special chars in log output ─────────────────────────────── LOG_HTML="$(sed 's/&/\&/g; s/\</g; s/>/\>/g' "${LOG_TMP}")" # ── Generate HTML ───────────────────────────────────────────────────────── cat > "${HTML_LATEST}" << HTMLEOF
${LOG_HTML}