#!/bin/bash set -euo pipefail cd "$(dirname "$0")" host="root@hub.hordelab.com" run_nginx() { echo "Uploading nginx config file" scp template/nginx.conf "$host:/etc/nginx/sites-enabled/hub.hordelab.com" ssh "$host" -t " nginx -s reload # full process is currently broken #certbot --keep -d hub.hordelab.com # uncomment if needed #certbot certonly -d hub.hordelab.com #nginx -s reload " } run_service() { echo "Uploading Launcher and Service" scp template/launch-hub.sh "$host:/var/horde/launch-hub.sh" scp template/systemd.service "$host:/etc/systemd/system/horde-hub.service" ssh "$host" -t " systemctl daemon-reload systemctl enable horde-hub.service systemctl start horde-hub.service " } run_update() { echo "Updating repository" ssh "$host" -t " source ~/.nvm/nvm.sh #? cd /var/horde/hub git pull make install " } restart_service() { echo "Restarting horde-hub.service" ssh "$host" -t "systemctl restart horde-hub.service" } # Determine which stages to run stages=() if [[ $# -eq 0 ]]; then # Interactive prompts when no arguments are given read -p "Run nginx deployment? [Y/n] " choice if [[ -z "$choice" || "$choice" =~ ^[Yy]$ ]]; then stages+=(nginx) fi read -p "Run service deployment? [Y/n] " choice if [[ -z "$choice" || "$choice" =~ ^[Yy]$ ]]; then stages+=(service) fi read -p "Run update (git pull + make install)? [Y/n] " choice if [[ -z "$choice" || "$choice" =~ ^[Yy]$ ]]; then stages+=(update) fi else # Parse arguments for arg in "$@"; do case "$arg" in nginx|service|update) stages+=("$arg") ;; *) echo "Unknown argument: $arg" >&2 exit 1 ;; esac done fi # Execute selected stages for stage in "${stages[@]}"; do case "$stage" in nginx) run_nginx ;; service) run_service ;; update) run_update ;; esac done # Final stage: always restart the systemd service at the end restart_service