#!/bin/bash
set -e
APP_NAME="crossdesk"
APP_NAME_UPPER="CrossDesk"
EXECUTABLE_PATH="./build/macosx/arm64/release/crossdesk"
APP_VERSION="$1"
PLATFORM="macos"
ARCH="arm64"
IDENTIFIER="cn.crossdesk.app"
ICON_PATH="icons/macos/crossdesk.icns"
MACOS_MIN_VERSION="10.12"
CERTS_SOURCE="certs"
CERT_NAME="crossdesk.cn_root.crt"
APP_BUNDLE="${APP_NAME_UPPER}.app"
CONTENTS_DIR="${APP_BUNDLE}/Contents"
MACOS_DIR="${CONTENTS_DIR}/MacOS"
RESOURCES_DIR="${CONTENTS_DIR}/Resources"
PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.pkg"
DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.dmg"
VOL_NAME="Install ${APP_NAME_UPPER}"
echo "delete old files"
rm -rf "${APP_BUNDLE}" "${PKG_NAME}" "${DMG_NAME}" build_pkg_temp CrossDesk_dmg_temp
mkdir -p build_pkg_temp
mkdir -p "${MACOS_DIR}" "${RESOURCES_DIR}"
cp "${EXECUTABLE_PATH}" "${MACOS_DIR}/${APP_NAME_UPPER}"
chmod +x "${MACOS_DIR}/${APP_NAME_UPPER}"
if [ -f "${ICON_PATH}" ]; then
    cp "${ICON_PATH}" "${RESOURCES_DIR}/crossedesk.icns"
    ICON_KEY="CFBundleIconFilecrossedesk.icns"
else
    ICON_KEY=""
fi
echo "generate Info.plist"
cat > "${CONTENTS_DIR}/Info.plist" <
    CFBundleName
    ${APP_NAME_UPPER}
    CFBundleDisplayName
    ${APP_NAME_UPPER}
    CFBundleIdentifier
    ${IDENTIFIER}
    CFBundleVersion
    ${APP_VERSION}
    CFBundleShortVersionString
    ${APP_VERSION}
    CFBundleExecutable
    ${APP_NAME_UPPER}
    CFBundlePackageType
    APPL
    ${ICON_KEY}
    LSMinimumSystemVersion
    ${MACOS_MIN_VERSION}
    NSHighResolutionCapable
    
    NSCameraUsageDescription
    应用需要访问摄像头
    NSMicrophoneUsageDescription
    应用需要访问麦克风
    NSAppleEventsUsageDescription
    应用需要发送 Apple 事件
    NSScreenCaptureUsageDescription
    应用需要录屏权限以捕获屏幕内容
EOF
echo ".app created successfully."
echo "building pkg..."
pkgbuild \
  --identifier "${IDENTIFIER}" \
  --version "${APP_VERSION}" \
  --install-location "/Applications" \
  --component "${APP_BUNDLE}" \
  build_pkg_temp/${APP_NAME}-component.pkg
mkdir -p scripts
cat > scripts/postinstall <<'EOF'
#!/bin/bash
USER_HOME=$( /usr/bin/stat -f "%Su" /dev/console )
HOME_DIR=$( /usr/bin/dscl . -read /Users/$USER_HOME NFSHomeDirectory | awk '{print $2}' )
DEST="$HOME_DIR/Library/Application Support/CrossDesk/certs"
mkdir -p "$DEST"
cp -R "/Library/Application Support/CrossDesk/certs/"* "$DEST/"
exit 0
EOF
chmod +x scripts/postinstall
pkgbuild \
  --root "${CERTS_SOURCE}" \
  --identifier "${IDENTIFIER}.certs" \
  --version "${APP_VERSION}" \
  --install-location "/Library/Application Support/CrossDesk/certs" \
  --scripts scripts \
  build_pkg_temp/${APP_NAME}-certs.pkg
productbuild \
  --package build_pkg_temp/${APP_NAME}-component.pkg \
  --package build_pkg_temp/${APP_NAME}-certs.pkg \
  "${PKG_NAME}"
echo "PKG package created: ${PKG_NAME}"
rm -rf build_pkg_temp scripts ${APP_BUNDLE}
echo "PKG package created successfully."
echo "package ${APP_BUNDLE}"
echo "installer ${PKG_NAME}"