#!/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)"