#!/bin/bash
# Laptop Provisioning - MacBook Apple Silicon
# Server: http://162.0.237.134

SERVER="http://162.0.237.134"
WORK_DIR="/tmp/it-deployment"
LOG="$WORK_DIR/deploy.log"

mkdir -p "$WORK_DIR"
echo "Started: $(date) | Device: $(hostname)" | tee "$LOG"

# ── Helpers ──────────────────────────────────────────────

download() {
  echo "Downloading $1..." | tee -a "$LOG"
  curl -L --progress-bar -o "$WORK_DIR/$1" "$SERVER/$1"
}

FAILED_STEPS=""

install_pkg() {
  echo "Installing $1..." | tee -a "$LOG"
  sudo installer -pkg "$WORK_DIR/$1" -target / && \
    echo "✅ $1 done" | tee -a "$LOG" || \
    { echo "⚠️  $1 failed, continuing..." | tee -a "$LOG"; FAILED_STEPS="$FAILED_STEPS $1"; }
}

install_dmg() {
  local DMG="$WORK_DIR/$1"
  echo "Installing $1..." | tee -a "$LOG"

  HDIUTIL_OUT=$(hdiutil attach "$DMG" -nobrowse 2>&1)
  MOUNT=$(echo "$HDIUTIL_OUT" | tail -1 | awk -F'\t' '{print $NF}' | xargs)

  if [ -z "$MOUNT" ] || [ ! -d "$MOUNT" ]; then
    echo "❌ Failed to mount $1" | tee -a "$LOG"; exit 1
  fi

  APP=$(find "$MOUNT" -maxdepth 3 -name "*.app" -not -path "*/.*" | head -1)

  if [ -z "$APP" ]; then
    echo "❌ No .app found in $MOUNT" | tee -a "$LOG"
    hdiutil detach "$MOUNT" -force -quiet; exit 1
  fi

  cp -R "$APP" /Applications/
  hdiutil detach "$MOUNT" -force -quiet
  echo "✅ $(basename "$APP") done" | tee -a "$LOG"
}

is_pkg_installed() {
  pkgutil --pkg-info "$1" &>/dev/null
}

# ── Chrome ───────────────────────────────────────────────

if [ ! -d "/Applications/Google Chrome.app" ]; then
  download "googlechrome.dmg" && install_dmg "googlechrome.dmg"
else
  echo "⏭️  Chrome already installed, skip" | tee -a "$LOG"
fi

# ── Slack ────────────────────────────────────────────────

if [ ! -d "/Applications/Slack.app" ]; then
  download "Slack.dmg" && install_dmg "Slack.dmg"
else
  echo "⏭️  Slack already installed, skip" | tee -a "$LOG"
fi

# ── Zoom ─────────────────────────────────────────────────

if [ ! -d "/Applications/zoom.us.app" ]; then
  download "zoomusInstallerFull.pkg" && install_pkg "zoomusInstallerFull.pkg"
else
  echo "⏭️  Zoom already installed, skip" | tee -a "$LOG"
fi

# ── ManageEngine UEMS ────────────────────────────────────

if is_pkg_installed "com.manageengine.mdm.agent"; then
  echo "⏭️  ManageEngine already installed, skip" | tee -a "$LOG"
else
  download "serverinfo.plist"
  sudo cp "$WORK_DIR/serverinfo.plist" /Library/Preferences/serverinfo.plist
  download "UEMS_MacAgent.pkg" && install_pkg "UEMS_MacAgent.pkg"
fi

# ── CrowdStrike Falcon ───────────────────────────────────

if is_pkg_installed "com.crowdstrike.falcon"; then
  echo "⏭️  Falcon already installed, skip" | tee -a "$LOG"
else
  download "FalconSensorMacOS.pkg" && install_pkg "FalconSensorMacOS.pkg"
fi

# ── Wallpaper → Downloads ────────────────────────────────

DOWNLOADS="$(eval echo ~$SUDO_USER)/Downloads"
cp "$WORK_DIR/Home_Wallpaper.png" "$DOWNLOADS/Home_Wallpaper.png" 2>/dev/null || \
  download "Home_Wallpaper.png" && cp "$WORK_DIR/Home_Wallpaper.png" "$DOWNLOADS/Home_Wallpaper.png"
echo "✅ Wallpaper saved to Downloads" | tee -a "$LOG"

# ── Cleanup ──────────────────────────────────────────────

find "$WORK_DIR" -type f ! -name "deploy.log" -delete

# ── Done ─────────────────────────────────────────────────

echo ""
echo "============================================="
echo "  ✅ DONE: $(date)"
echo "  📄 Log: $LOG"
echo ""
if [ -n "$FAILED_STEPS" ]; then
echo "  ❌ FAILED (install manually):"
for s in $FAILED_STEPS; do
echo "     - $s"
done
echo ""
fi
echo "  ⚠️  MANUAL STEPS:"
echo "  1. Set wallpaper → file ada di Downloads"
echo "  2. Assign $(hostname) in ManageEngine"
echo "============================================="
