#!/usr/bin/env bash set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" WRAPPER="${MEMIND_BAIDU_PUSH_WRAPPER:-$ROOT/scripts/run-baidu-sitemap-push-prod.sh}" LABEL="${MEMIND_BAIDU_PUSH_LABEL:-cn.tkmind.memind-baidu-sitemap-push}" PLIST="$HOME/Library/LaunchAgents/${LABEL}.plist" LOG="$HOME/Library/Logs/memind-baidu-sitemap-push.log" GUI="gui/$(id -u)" HOUR="${MEMIND_BAIDU_PUSH_HOUR:-1}" MINUTE="${MEMIND_BAIDU_PUSH_MINUTE:-0}" STATE_FILE="${BAIDU_PUSH_STATE_FILE:-$ROOT/data/baidu-push-state.json}" mkdir -p "$HOME/Library/LaunchAgents" "$HOME/Library/Logs" "$(dirname "$STATE_FILE")" if [[ ! -x "$WRAPPER" ]]; then chmod +x "$WRAPPER" fi if [[ ! -f "$WRAPPER" ]]; then echo "baidu push wrapper not found: $WRAPPER" >&2 exit 1 fi cat > "$PLIST" < Label $LABEL ProgramArguments /bin/bash $WRAPPER WorkingDirectory $ROOT StartCalendarInterval Hour $HOUR Minute $MINUTE StandardOutPath $LOG StandardErrorPath $LOG EnvironmentVariables PATH /opt/homebrew/bin:/opt/homebrew/opt/node@24/bin:/usr/local/bin:/usr/bin:/bin BAIDU_PUSH_STATE_FILE $STATE_FILE EOF plutil -lint "$PLIST" launchctl bootout "$GUI/$LABEL" 2>/dev/null || true launchctl bootstrap "$GUI" "$PLIST" launchctl enable "$GUI/$LABEL" echo "installed $PLIST" echo "wrapper: $WRAPPER" echo "schedule: daily ${HOUR}:$(printf '%02d' "$MINUTE") (local time)" echo "state_file: $STATE_FILE" echo "log: $LOG"