From 3816e5e2e8f41a28696965234e9b6f284bce1621 Mon Sep 17 00:00:00 2001 From: mikl0s Date: Sun, 22 Feb 2026 21:59:34 +0000 Subject: [PATCH] feat: add release build script for zip delivery Co-Authored-By: Claude Opus 4.6 --- scripts/build-release.sh | 62 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 scripts/build-release.sh diff --git a/scripts/build-release.sh b/scripts/build-release.sh new file mode 100755 index 0000000..bdd4bfc --- /dev/null +++ b/scripts/build-release.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +set -euo pipefail + +TIMESTAMP=$(date +%Y%m%d-%H%M%S) +DATE=$(date +%Y-%m-%d) +RELEASE_DIR="/tmp/foamking-release-${TIMESTAMP}" +ZIP_NAME="foamking-beregner-${DATE}.zip" +PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)" + +echo "FoamKing Release Builder" +echo "========================" +echo "" + +# Create temp directory +mkdir -p "${RELEASE_DIR}" +echo "Build directory: ${RELEASE_DIR}" + +# Copy shipping files +echo "Copying files..." +cp -r "${PROJECT_DIR}/app" "${RELEASE_DIR}/" +cp -r "${PROJECT_DIR}/components" "${RELEASE_DIR}/" +cp -r "${PROJECT_DIR}/lib" "${RELEASE_DIR}/" +cp -r "${PROJECT_DIR}/public" "${RELEASE_DIR}/" +mkdir -p "${RELEASE_DIR}/scripts" +cp "${PROJECT_DIR}/scripts/setup.js" "${RELEASE_DIR}/scripts/" +cp "${PROJECT_DIR}/middleware.ts" "${RELEASE_DIR}/" +cp "${PROJECT_DIR}/package.json" "${RELEASE_DIR}/" +cp "${PROJECT_DIR}/tsconfig.json" "${RELEASE_DIR}/" +cp "${PROJECT_DIR}/tailwind.config.ts" "${RELEASE_DIR}/" +cp "${PROJECT_DIR}/postcss.config.mjs" "${RELEASE_DIR}/" +cp "${PROJECT_DIR}/eslint.config.mjs" "${RELEASE_DIR}/" +cp "${PROJECT_DIR}/next.config.ts" "${RELEASE_DIR}/" +cp "${PROJECT_DIR}/.env.example" "${RELEASE_DIR}/" +cp "${PROJECT_DIR}/SETUP.md" "${RELEASE_DIR}/" +cp "${PROJECT_DIR}/OPSÆTNING.md" "${RELEASE_DIR}/" + +# Copy .prettierrc if it exists +[ -f "${PROJECT_DIR}/.prettierrc.json" ] && cp "${PROJECT_DIR}/.prettierrc.json" "${RELEASE_DIR}/" + +# Verify build +echo "" +echo "Installing dependencies..." +cd "${RELEASE_DIR}" +npm install --ignore-scripts 2>&1 | tail -1 + +echo "Verifying build..." +npm run build 2>&1 | tail -3 + +# Clean up build artifacts +echo "" +echo "Cleaning up..." +rm -rf "${RELEASE_DIR}/node_modules" +rm -rf "${RELEASE_DIR}/.next" + +# Create zip +cd /tmp +zip -rq "${ZIP_NAME}" "foamking-release-${TIMESTAMP}" + +echo "" +echo "Release built successfully!" +echo "Zip: /tmp/${ZIP_NAME}" +echo "Size: $(du -h "/tmp/${ZIP_NAME}" | cut -f1)"