netgescon-day0/scripts/ai/sync_docs_to_53.sh

93 lines
2.2 KiB
Bash
Executable File

#!/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