93 lines
2.2 KiB
Bash
Executable File
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 |