#!/usr/bin/env bash
# Pi pull — stage from Dropbox, optionally promote immediately.
#
# Default (scheduled workflow): stage only — use stage_from_dropbox.sh directly.
# Manual one-shot upgrade:
#   PROMOTE_NOW=1 bash pull_from_dropbox.sh
#
# Preserves on Pi: config.ini, content/*.mp4 (logo loops), SGVI ad folders, log/, run/
# Updates: Assets/{01..16,Shared}/, content/*.png|jpg, Python, layouts
# Persistent staging: ~/DyzineFrame-Staging (never deleted)
# Rollback snapshot:   ~/DyzineFrame-Rollback (updated on each promote)

if grep -q $'\r' "${BASH_SOURCE[0]}" 2>/dev/null; then
  sed -i 's/\r$//' "${BASH_SOURCE[0]}"
  exec bash "${BASH_SOURCE[0]}" "$@"
fi

set -euo pipefail

if [[ "$(id -un)" == root ]]; then
  echo "FATAL: do not run pull as root/sudo." >&2
  exit 1
fi

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROMOTE_NOW="${PROMOTE_NOW:-0}"
# shellcheck source=dyzineframe_paths.sh
source "${ROOT}/dyzineframe_paths.sh"

bash "${ROOT}/stage_from_dropbox.sh"

if [[ "${PROMOTE_NOW}" == "1" ]]; then
  FORCE=1 PROMOTE_RESTART=1 bash "${ROOT}/promote_staging.sh"
else
  echo ""
  echo "Staged only. Promote at 03:00 America/St_Thomas when staging-pending is set, at next boot, or now:"
  echo "  FORCE=1 PROMOTE_RESTART=1 bash ${ROOT}/promote_staging.sh"
fi

echo ""
if [[ -f "${DYZINEFRAME_ROOT}/VERSION.txt" ]]; then
  echo "Live version:"
  cat "${DYZINEFRAME_ROOT}/VERSION.txt"
fi
