foamking/scripts/build-release.sh
mikl0s 14445a092c fix: build-release script and remaining build errors
Remove --ignore-scripts from npm install (better-sqlite3 needs native
build). Add tar.gz fallback when zip is not available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 22:03:45 +00:00

69 lines
2 KiB
Bash
Executable file

#!/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 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 archive
cd /tmp
if command -v zip &> /dev/null; then
zip -rq "${ZIP_NAME}" "foamking-release-${TIMESTAMP}"
ARCHIVE="/tmp/${ZIP_NAME}"
else
TAR_NAME="foamking-beregner-${DATE}.tar.gz"
tar -czf "${TAR_NAME}" "foamking-release-${TIMESTAMP}"
ARCHIVE="/tmp/${TAR_NAME}"
fi
echo ""
echo "Release built successfully!"
echo "Archive: ${ARCHIVE}"
echo "Size: $(du -h "${ARCHIVE}" | cut -f1)"