#!/bin/sh
# ORBIT-Agent für macOS installieren.
# Lädt die aktuelle Version von orbit.nexa-bucan.ch, prüft die SHA-256-Prüfsumme und legt sie unter ~/.orbit/bin ab.
# Ohne Argumente wird nur installiert: nichts außerhalb von ~/.orbit geändert, nichts gestartet.
# Mit --code wird der Mac zusätzlich gekoppelt und der automatische Start eingerichtet:
#   curl -fsSL https://orbit.nexa-bucan.ch/install.sh | sh -s -- --code XXXX-XXXX-XXXX [--root ORDNER] [--name NAME]
set -eu

CODE=""
ROOT="$HOME"
NAME=""
while [ $# -gt 0 ]; do
  case "$1" in
    --code) CODE="${2:-}"; shift 2 ;;
    --root) ROOT="${2:-}"; shift 2 ;;
    --name) NAME="${2:-}"; shift 2 ;;
    *) echo "Unbekannte Option: $1" >&2; exit 1 ;;
  esac
done

BASE="https://orbit.nexa-bucan.ch"
DEST="$HOME/.orbit/bin"

if [ "$(uname -s)" != "Darwin" ]; then
  echo "Der ORBIT-Agent läuft nur auf macOS." >&2
  exit 1
fi

TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT

curl -fsSL "$BASE/download/manifest.json" -o "$TMP/manifest.json"
FILE="$(/usr/bin/plutil -extract file raw -o - "$TMP/manifest.json")"
SHA="$(/usr/bin/plutil -extract sha256 raw -o - "$TMP/manifest.json")"
VERSION="$(/usr/bin/plutil -extract version raw -o - "$TMP/manifest.json")"

case "$FILE" in
  orbit-agent-*) ;;
  *) echo "Unerwarteter Dateiname im Manifest." >&2; exit 1 ;;
esac

echo "Lade ORBIT-Agent $VERSION ..."
curl -fSL --progress-bar "$BASE/download/$FILE" -o "$TMP/orbit-agent"

ACTUAL="$(/usr/bin/shasum -a 256 "$TMP/orbit-agent" | awk '{print $1}')"
if [ "$ACTUAL" != "$SHA" ]; then
  echo "Prüfsumme stimmt nicht. Abbruch, es wurde nichts installiert." >&2
  exit 1
fi

mkdir -p "$DEST"
chmod +x "$TMP/orbit-agent"
mv "$TMP/orbit-agent" "$DEST/orbit-agent"

echo
echo "Installiert: $DEST/orbit-agent ($("$DEST/orbit-agent" --version 2>/dev/null || echo "$VERSION"))"
echo

if [ -n "$CODE" ]; then
  echo "Verbinde diesen Mac mit ORBIT ..."
  if [ -n "$NAME" ]; then
    "$DEST/orbit-agent" enroll --server "$BASE" --code "$CODE" --root "$ROOT" --inventory --name "$NAME"
  else
    "$DEST/orbit-agent" enroll --server "$BASE" --code "$CODE" --root "$ROOT" --inventory
  fi
  "$DEST/orbit-agent" install-launchagent
  APPBIN="$HOME/Library/Application Support/OrbitAgent/orbit-agent"
  echo
  echo "Fertig. ORBIT läuft jetzt im Hintergrund und startet automatisch."
  echo "Letzter Schritt für die Kontenliste: In den Systemeinstellungen unter"
  echo "Datenschutz & Sicherheit > Voller Festplattenzugriff die Datei \"orbit-agent\" aktivieren."
  echo "Ich öffne dir die Einstellungen und zeige die Datei im Finder."
  /usr/bin/open "x-apple.systempreferences:com.apple.preference.security?Privacy_AllFiles" 2>/dev/null || true
  /usr/bin/open -R "$APPBIN" 2>/dev/null || true
  exit 0
fi

echo "Nächste Schritte:"
echo "  1. In der ORBIT-App unter \"Geräte\" einen Einrichtungscode erzeugen."
echo "  2. Alles in einem Schritt (Code einsetzen):"
echo "     curl -fsSL $BASE/install.sh | sh -s -- --code XXXX-XXXX-XXXX"
