#!/bin/sh
set -u
LOG=/var/log/team-devspace-install.log
log() { /usr/bin/printf '%s [postinstall] %s\n' "$(/bin/date -u '+%Y-%m-%dT%H:%M:%SZ')" "$*" >> "$LOG" 2>/dev/null || true; }
log 'start'
if [ "${3:-/}" != "/" ]; then log 'skip non-root target'; exit 0; fi
if [ "${TEAM_DEVSPACE_SKIP_OPEN:-0}" = "1" ]; then log 'skip auto-open'; exit 0; fi
USER_NAME=$(/usr/bin/stat -f %Su /dev/console 2>/dev/null || true)
if [ -z "$USER_NAME" ] || [ "$USER_NAME" = root ] || [ "$USER_NAME" = loginwindow ]; then
  log 'no logged-in desktop user; auto-open skipped'
  echo 'Open Team DevSpace from Applications after signing in to complete Enrollment.'
  exit 0
fi
USER_ID=$(/usr/bin/id -u "$USER_NAME" 2>/dev/null || true)
case "$USER_ID" in
  ''|*[!0-9]*)
    log 'WARN code=CONSOLE_USER_LOOKUP_FAILED; install remains successful'
    echo 'Team DevSpace was installed, but the logged-in user could not be resolved. Open it from Applications to complete Enrollment.' >&2
    exit 0
    ;;
esac
show_launch_help() {
  if ! /bin/launchctl asuser "$USER_ID" /usr/bin/sudo -u "$USER_NAME" /usr/bin/osascript -e 'display alert "Team DevSpace 需要完成设置" message "Team DevSpace 已安装，但安装后的应用启动未能确认。请从“应用程序”手动打开 Team DevSpace。若 macOS 阻止打开，请前往“系统设置 → 隐私与安全性”，对 Team DevSpace 选择“仍要打开”，然后再次打开。随后会弹出 Access Key，并在设置完成后显示菜单栏图标。" as warning buttons {"好"} default button "好"'; then
    log 'WARN code=USER_ALERT_FAILED'
  fi
}
USER_HOME=$(/usr/bin/dscl . -read "/Users/$USER_NAME" NFSHomeDirectory 2>/dev/null | /usr/bin/sed 's/^NFSHomeDirectory: //' || true)
UI_READY=''
if [ -n "$USER_HOME" ]; then
  UI_READY="$USER_HOME/Library/Application Support/TeamDevSpace/.ui-ready"
  /bin/rm -f "$UI_READY" 2>/dev/null || true
else
  log 'WARN code=USER_HOME_LOOKUP_FAILED; launch confirmation unavailable'
fi
if ! /bin/launchctl asuser "$USER_ID" /usr/bin/sudo -u "$USER_NAME" /usr/bin/open '/Applications/Team DevSpace.app'; then
  log 'WARN code=AUTO_OPEN_FAILED; install remains successful'
  echo 'Team DevSpace was installed, but it could not be opened automatically. Open it from Applications to complete Enrollment. See /var/log/team-devspace-install.log.' >&2
  show_launch_help
elif [ -n "$UI_READY" ]; then
  attempt=0
  while [ "$attempt" -lt 45 ] && [ ! -f "$UI_READY" ]; do
    /bin/sleep 1
    attempt=$((attempt + 1))
  done
  if [ -f "$UI_READY" ]; then
    log 'auto-open confirmed by visible UI marker'
  else
    log 'WARN code=AUTO_OPEN_UNCONFIRMED; install remains successful'
    echo 'Team DevSpace was installed, but its first-run UI did not confirm visibility. Open it from Applications to complete Enrollment. See /var/log/team-devspace-install.log.' >&2
    show_launch_help
  fi
else
  log 'WARN code=AUTO_OPEN_UNVERIFIED; install remains successful'
  show_launch_help
fi
log 'complete'
exit 0
