#!/usr/bin/env bash # ssr-schedule — manage the launchd scheduled sync job. set -euo pipefail SSR_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" # shellcheck source=../lib/common.sh source "$SSR_ROOT/lib/common.sh" ssr::require_macos ssr::load_config LABEL="${SSR_LAUNCHD_LABEL:-de.surke.ssr.sync}" PLIST_SRC="$SSR_ROOT/launchd/${LABEL}.plist" PLIST_DST="$HOME/Library/LaunchAgents/${LABEL}.plist" LOG_DIR="${SSR_LOG_DIR:-$HOME/.local/state/ssr/logs}" INTERVAL_HOUR="${SSR_SCHEDULE_HOUR:-9}" INTERVAL_MIN="${SSR_SCHEDULE_MINUTE:-0}" SSR_BIN="$SSR_ROOT/bin/ssr" # Modern launchd target. `launchctl load -w` has been deprecated since 10.11 # and is a silent no-op on recent macOS — use bootstrap/bootout against the # GUI domain of the current user. GUI_DOMAIN="gui/$(id -u)" SERVICE_TARGET="${GUI_DOMAIN}/${LABEL}" # ssr::schedule::is_loaded — exit 0 iff launchd knows the job. # `launchctl print` is the modern check; `launchctl list