#!/bin/zsh
set -euo pipefail

TARGET_VOLUME="${3:-/}"
SCRIPT_DIR="${0:A:h}"
RELEASE_CONFIG="$SCRIPT_DIR/release-variant.plist"
HCI_SERVICE_LABEL="com.hd838a.SayAll.AppleRemoteHCIService"
HCI_SERVICE_DESTINATION="${TARGET_VOLUME%/}/Library/PrivilegedHelperTools/$HCI_SERVICE_LABEL"
HCI_SERVICE_PLIST="${TARGET_VOLUME%/}/Library/LaunchDaemons/$HCI_SERVICE_LABEL.plist"

uses_chinese_locale() {
  local locale="${LC_ALL:-${LC_MESSAGES:-${LANG:-}}}"
  [[ "$locale" == zh* ]]
}

installer_message() {
  if uses_chinese_locale; then
    print "$1"
  else
    print "$2"
  fi
}

hardware_architecture() {
  if [[ "$(/usr/sbin/sysctl -in hw.optional.arm64 2>/dev/null || print 0)" == "1" ]]; then
    print "arm64"
  else
    print "x86_64"
  fi
}

test -f "$RELEASE_CONFIG"
EXPECTED_ARCHITECTURE="$(/usr/bin/plutil -extract ExpectedArchitecture raw -o - "$RELEASE_CONFIG")"
MINIMUM_SYSTEM_MAJOR="$(/usr/bin/plutil -extract MinimumSystemMajor raw -o - "$RELEASE_CONFIG")"
CURRENT_ARCHITECTURE="$(hardware_architecture)"
CURRENT_SYSTEM_MAJOR="$(/usr/bin/sw_vers -productVersion | /usr/bin/cut -d. -f1)"
[[ "$CURRENT_ARCHITECTURE" == "$EXPECTED_ARCHITECTURE" ]]
[[ "$CURRENT_SYSTEM_MAJOR" -ge "$MINIMUM_SYSTEM_MAJOR" ]]

test -x "$HCI_SERVICE_DESTINATION"
test -f "$HCI_SERVICE_PLIST"
/usr/bin/codesign --verify --strict "$HCI_SERVICE_DESTINATION"
/usr/bin/plutil -lint "$HCI_SERVICE_PLIST"
test "$(/usr/bin/codesign -dvv "$HCI_SERVICE_DESTINATION" 2>&1 | \
  /usr/bin/sed -n 's/^Identifier=//p')" = "$HCI_SERVICE_LABEL"
test "$(/usr/bin/plutil -extract Label raw -o - "$HCI_SERVICE_PLIST")" = "$HCI_SERVICE_LABEL"
test "$(/usr/libexec/PlistBuddy -c "Print :MachServices:$HCI_SERVICE_LABEL" \
  "$HCI_SERVICE_PLIST")" = "true"
test "$(/usr/bin/plutil -extract ProgramArguments.0 raw -o - "$HCI_SERVICE_PLIST")" = \
  "$HCI_SERVICE_DESTINATION"
test "$(/usr/bin/plutil -extract ProgramArguments raw -o - "$HCI_SERVICE_PLIST" | \
  /usr/bin/plutil -convert xml1 -o - -- - | /usr/bin/grep -c '<string>')" = "1"
/usr/sbin/chown root:wheel "$HCI_SERVICE_DESTINATION" "$HCI_SERVICE_PLIST"
/bin/chmod 755 "$HCI_SERVICE_DESTINATION"
/bin/chmod 644 "$HCI_SERVICE_PLIST"

if [[ "$TARGET_VOLUME" == "/" ]]; then
  /bin/launchctl bootout "system/$HCI_SERVICE_LABEL" >/dev/null 2>&1 || true
  "$HCI_SERVICE_DESTINATION" --restore
  /bin/launchctl bootstrap system "$HCI_SERVICE_PLIST"
fi

installer_message \
  "Siri Remote 支持已安装并启用；以后可在安装器的自定安装中取消选择。" \
  "Siri Remote support was installed and enabled. You can deselect it in the installer's Customize step later."
