#!/usr/bin/env bash # ssr-sync — back up Homebrew + Mackup state to the configured cloud dir. set -euo pipefail SSR_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" # shellcheck source=../lib/common.sh source "$SSR_ROOT/lib/common.sh" # shellcheck source=../lib/cloud.sh source "$SSR_ROOT/lib/cloud.sh" # shellcheck source=../lib/brew.sh source "$SSR_ROOT/lib/brew.sh" # shellcheck source=../lib/mackup.sh source "$SSR_ROOT/lib/mackup.sh" ssr::require_macos ssr::load_config ssr::log "ssr sync starting" ssr::syslog "sync starting" ssr::cloud::ensure_available backup_dir="$(ssr::cloud::backup_dir)" mackup_dir="$(ssr::cloud::mackup_dir)" ssr::ensure_dir "$backup_dir" ssr::ensure_dir "$mackup_dir" ssr::brew::ensure_installed ssr::mackup::ensure_installed ssr::mackup::configure "$mackup_dir" ssr::brew::update ssr::brew::upgrade ssr::mackup::backup ssr::brew::dump "$backup_dir" ssr::brew::cleanup # Record sync time so `ssr status` can report freshness. state_dir="${SSR_STATE_DIR:-$HOME/.local/state/ssr}" ssr::ensure_dir "$state_dir" date '+%Y-%m-%dT%H:%M:%S%z' > "$state_dir/last-sync" ssr::ok "ssr sync completed → $backup_dir" ssr::syslog "sync completed"