#!/usr/bin/env bash
set -euo pipefail

# Wimemo Local Connector one-command installer for macOS.
# The release pipeline will host the signed binary on wimemo.com/downloads.

VERSION="${WIMEMO_CONNECTOR_VERSION:-latest}"
BASE_URL="${WIMEMO_CONNECTOR_BASE_URL:-https://wimemo.com/downloads/local-connector}"
ARCH="$(uname -m)"
INSTALL_DIR="$HOME/Library/Application Support/Wimemo Local Connector"
BIN_DIR="$HOME/.wimemo/bin"
BIN_PATH="$BIN_DIR/wimemo-local-connector"
PLIST="$HOME/Library/LaunchAgents/com.wimemo.local-connector.plist"
MEDIA_DIRS="${WIMEMO_MEDIA_DIRS:-$HOME/Pictures,$HOME/Movies}"

case "$ARCH" in
  arm64) artifact="wimemo-local-connector-darwin-arm64" ;;
  x86_64) artifact="wimemo-local-connector-darwin-amd64" ;;
  *) echo "unsupported Mac architecture: $ARCH" >&2; exit 1 ;;
esac

mkdir -p "$INSTALL_DIR" "$BIN_DIR" "$(dirname "$PLIST")"

if [[ "${WIMEMO_CONNECTOR_LOCAL_BINARY:-}" != "" ]]; then
  cp "$WIMEMO_CONNECTOR_LOCAL_BINARY" "$BIN_PATH"
else
  if [[ "$VERSION" == "latest" ]]; then
    url="$BASE_URL/$artifact"
  else
    url="$BASE_URL/$VERSION/$artifact"
  fi
  echo "Downloading Wimemo Local Connector..."
  curl -fL "$url" -o "$BIN_PATH"
fi
chmod +x "$BIN_PATH"

cat > "$PLIST" <<PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.wimemo.local-connector</string>
  <key>ProgramArguments</key>
  <array>
    <string>$BIN_PATH</string>
    <string>-addr</string><string>0.0.0.0:8765</string>
    <string>-media</string><string>$MEDIA_DIRS</string>
    <string>-data</string><string>$INSTALL_DIR</string>
  </array>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>StandardOutPath</key><string>$INSTALL_DIR/connector.log</string>
  <key>StandardErrorPath</key><string>$INSTALL_DIR/connector.err.log</string>
</dict>
</plist>
PLIST

launchctl unload "$PLIST" >/dev/null 2>&1 || true
launchctl load "$PLIST"

echo "Wimemo Local Connector installed."
echo "Open http://127.0.0.1:8765/health"
echo "Pairing token:"
"$BIN_PATH" -data "$INSTALL_DIR" -print-token

