Files
dashcaddy/scripts/prepare-release.sh
T

27 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
STATUS_DIR="${ROOT_DIR}/status"
API_DIR="${ROOT_DIR}/dashcaddy-api"
log() { echo "[prepare-release] $*"; }
fail() { echo "[prepare-release] ERROR: $*" >&2; exit 1; }
[[ -f "${STATUS_DIR}/package.json" ]] || fail "Missing status/package.json"
[[ -f "${API_DIR}/package.json" ]] || fail "Missing dashcaddy-api/package.json"
log "Building dashboard frontend..."
cd "${STATUS_DIR}"
npm run build
log "Verifying CSP hash present in status/index.html..."
grep -q "Content-Security-Policy" "${STATUS_DIR}/index.html" || fail "Missing CSP meta tag"
grep -q "sha256-" "${STATUS_DIR}/index.html" || fail "Missing CSP script hash"
grep -q "license-topbar-version" "${STATUS_DIR}/index.html" || fail "Expected version-chip markup missing"
log "Verifying API version metadata..."
node -e "const fs=require('fs'); const pkg=JSON.parse(fs.readFileSync('${API_DIR}/package.json','utf8')); if(!pkg.version) process.exit(1); console.log('[prepare-release] API version', pkg.version);"
log "Release prep complete. Package from repo root after this step."