#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" ENV_FILE="${ENV_FILE:-$ROOT_DIR/docker/.env.multisite}" TARGET_HOST="" TARGET_DIR="" REMOTE_BOOTSTRAP="" MODE="mirror" load_env_file() { local env_file="$1" local line key value while IFS= read -r line || [[ -n "$line" ]]; do line="${line%$'\r'}" [[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue [[ "$line" != *=* ]] && continue key="${line%%=*}" value="${line#*=}" export "$key=$value" done < "$env_file" } usage() { cat <<'EOF' Usage: sync_docs_to_53.sh [--env-file /path/to/.env.multisite] [--mode mirror|push] [--target-host michele@192.168.0.53] [--target-dir /var/www/netgescon-docs] Modes: mirror Update the .53 docs mirror from Gitea using bootstrap_docs_mirror.sh. push Rsync the current local docs and AI scripts to the target dir on .53. EOF } while [[ $# -gt 0 ]]; do case "$1" in --env-file) ENV_FILE="$2" shift 2 ;; --mode) MODE="$2" shift 2 ;; --target-host) TARGET_HOST="$2" shift 2 ;; --target-dir) TARGET_DIR="$2" shift 2 ;; -h|--help) usage exit 0 ;; *) echo "Unknown option: $1" >&2 usage exit 1 ;; esac done if [[ -f "$ENV_FILE" ]]; then load_env_file "$ENV_FILE" fi TARGET_HOST="${TARGET_HOST:-${NETGESCON_DOCS_53_SSH:-michele@192.168.0.53}}" TARGET_DIR="${TARGET_DIR:-${NETGESCON_DOCS_53_DIR:-/var/www/netgescon-docs}}" REMOTE_BOOTSTRAP="${NETGESCON_DOCS_53_BOOTSTRAP:-~/netgescon/netgescon-day0/scripts/ai/bootstrap_docs_mirror.sh}" case "$MODE" in mirror) ssh "$TARGET_HOST" "bash '$REMOTE_BOOTSTRAP' '$TARGET_DIR'" ;; push) rsync -az --delete "$ROOT_DIR/docs/" "$TARGET_HOST:$TARGET_DIR/docs/" rsync -az --delete "$ROOT_DIR/scripts/ai/" "$TARGET_HOST:$TARGET_DIR/scripts/ai/" rsync -az "$ROOT_DIR/README.md" "$TARGET_HOST:$TARGET_DIR/README.md" rsync -az "$ROOT_DIR/CHANGELOG.md" "$TARGET_HOST:$TARGET_DIR/CHANGELOG.md" echo "TARGET_HOST=$TARGET_HOST" echo "TARGET_DIR=$TARGET_DIR" echo "MODE=push" ;; *) echo "Unsupported mode: $MODE" >&2 exit 1 ;; esac