#!/usr/bin/env bash
set -euo pipefail

mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/id_deploy
chmod 600 ~/.ssh/id_deploy
ssh-keyscan -H "$SSH_HOST" >> ~/.ssh/known_hosts
export RSYNC_RSH='ssh -i ~/.ssh/id_deploy -o IdentitiesOnly=yes'

rsync -az --delete \
	--exclude '.git/' \
	--exclude 'node_modules/' \
	--exclude '.env' \
	--exclude '.env.*' \
	--exclude 'apps/extension/' \
	--filter 'P .env' \
	--filter 'P .env.*' \
	--filter 'P node_modules/' \
	./ "$SSH_USER@$SSH_HOST:$API_PATH/"

ssh -i ~/.ssh/id_deploy -o IdentitiesOnly=yes "$SSH_USER@$SSH_HOST" \
	"mkdir -p '$SDK_PATH/v1' '$DASHBOARD_PATH'"
rsync -az packages/sdk/dist/sdk.global.js "$SSH_USER@$SSH_HOST:$SDK_PATH/v1/sdk.js"
rsync -az --delete apps/dashboard/dist/ "$SSH_USER@$SSH_HOST:$DASHBOARD_PATH/"

ssh -i ~/.ssh/id_deploy -o IdentitiesOnly=yes "$SSH_USER@$SSH_HOST" \
	"set -euo pipefail
	 export NVM_DIR=\"\$HOME/.nvm\"
	 [ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\"
	 command -v node >/dev/null || { echo 'Install Node 22 on the server (nvm, see .nvmrc).' >&2; exit 1; }
	 command -v pnpm >/dev/null || corepack enable
	 command -v pm2 >/dev/null || npm install -g pm2
	 cd '$API_PATH'
	 pnpm install --frozen-lockfile
	 pnpm db:migrate
	 if pm2 describe '$PM2_NAME' >/dev/null 2>&1; then
	   pm2 restart '$PM2_NAME' --update-env
	 else
	   pm2 start pnpm --name '$PM2_NAME' --cwd '$API_PATH' -- --filter @circuy/api start
	 fi
	 pm2 save"
