#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" BACKEND_DIR="$ROOT_DIR/backend" PC_ADMIN_DIR="$ROOT_DIR/pc-admin" RELEASE_DIR="$ROOT_DIR/release" SERVER_PACKAGE="$RELEASE_DIR/server" PC_STATIC="$SERVER_PACKAGE/public/pc-admin" NPM_BIN="${NPM_BIN:-npm}" mkdir -p "$RELEASE_DIR" RELEASE_FULL="$(cd "$RELEASE_DIR" && pwd -P)" SERVER_PACKAGE_FULL="$RELEASE_FULL/server" case "$SERVER_PACKAGE_FULL" in "$RELEASE_FULL"/*) ;; *) echo "Refusing to clean package path outside release directory: $SERVER_PACKAGE_FULL" >&2 exit 1 ;; esac rm -rf "$SERVER_PACKAGE_FULL" mkdir -p "$PC_STATIC" ( cd "$PC_ADMIN_DIR" "$NPM_BIN" run build ) cp -R "$BACKEND_DIR/src" "$SERVER_PACKAGE/src" cp -R "$BACKEND_DIR/sql" "$SERVER_PACKAGE/sql" cp "$BACKEND_DIR/package.json" "$SERVER_PACKAGE/" cp "$BACKEND_DIR/package-lock.json" "$SERVER_PACKAGE/" cp "$BACKEND_DIR/.env.example" "$SERVER_PACKAGE/" cp -R "$PC_ADMIN_DIR/dist/." "$PC_STATIC/" mkdir -p "$SERVER_PACKAGE/uploads" echo "Server package ready: $SERVER_PACKAGE" echo "Upload this directory, then run npm ci --omit=dev and npm start on the server."