#!/usr/bin/env bash set -euo pipefail readonly LOCAL_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" readonly PROJECT_ROOT="$(cd "$LOCAL_ROOT/../.." && pwd)" configuration_exports=$(/usr/bin/python3 "$PROJECT_ROOT/Tools/release_configuration.py" --shell) eval "$configuration_exports" readonly DEPLOY_HOST="$PROJECTQUINT_DEPLOY_HOST" readonly DEPLOY_KEY="$PROJECTQUINT_DEPLOY_KEY" readonly REMOTE_SOURCE="$PROJECTQUINT_REMOTE_SOURCE" readonly REMOTE_WEB_ROOT="/var/www/projectquint" readonly REMOTE_NGINX="/etc/nginx/sites-available/projectquint.conf" readonly SSH_ARGS=(-i "$DEPLOY_KEY" -o IdentitiesOnly=yes -o BatchMode=yes) readonly RSYNC_SSH=$(/usr/bin/python3 -c 'import shlex, sys; print(shlex.join(sys.argv[1:]))' ssh "${SSH_ARGS[@]}") if [[ ! -f "$LOCAL_ROOT/package.json" || ! -d "$LOCAL_ROOT/dist" ]]; then printf 'ProjectQuint site build is missing. Run npm run build first.\n' >&2 exit 1 fi ssh "${SSH_ARGS[@]}" "$DEPLOY_HOST" \ "mkdir -p '$REMOTE_SOURCE' '$REMOTE_SOURCE/.deploy'" rsync -a --delete \ --exclude node_modules \ --exclude dist \ --exclude .astro \ --exclude .deploy \ -e "$RSYNC_SSH" \ "$LOCAL_ROOT/" "$DEPLOY_HOST:$REMOTE_SOURCE/" ssh "${SSH_ARGS[@]}" "$DEPLOY_HOST" \ "mkdir -p '$REMOTE_SOURCE/.deploy/dist'" rsync -a --delete \ -e "$RSYNC_SSH" \ "$LOCAL_ROOT/dist/" "$DEPLOY_HOST:$REMOTE_SOURCE/.deploy/dist/" ssh "${SSH_ARGS[@]}" "$DEPLOY_HOST" \ "sudo mkdir -p '$REMOTE_WEB_ROOT' && sudo rsync -a --delete '$REMOTE_SOURCE/.deploy/dist/' '$REMOTE_WEB_ROOT/' && sudo install -m 0644 '$REMOTE_SOURCE/ops/nginx/projectquint.conf' '$REMOTE_NGINX' && sudo ln -sfn '$REMOTE_NGINX' /etc/nginx/sites-enabled/projectquint.conf && sudo nginx -t && sudo systemctl reload nginx"