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>
69 lines
2 KiB
Bash
Executable file
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)"
|