#!/bin/sh set -eu ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) APP_NAME="CrossSubtitle-AI" VERSION=$(node -p "require('$ROOT_DIR/package.json').version") TARGET_ARCH=${TARGET_ARCH:-$(uname -m)} RUST_TARGET="" case "$TARGET_ARCH" in arm64) RUST_TARGET="aarch64-apple-darwin" ;; x86_64) RUST_TARGET="x86_64-apple-darwin" ;; *) echo "Unsupported architecture: $TARGET_ARCH" exit 1 ;; esac if [ "$(uname -m)" != "$TARGET_ARCH" ]; then TARGET_DIR="$ROOT_DIR/src-tauri/target/${RUST_TARGET}" else TARGET_DIR="$ROOT_DIR/src-tauri/target/release" fi APP_PATH="$TARGET_DIR/bundle/macos/$APP_NAME.app" DMG_DIR="$TARGET_DIR/bundle/dmg" DMG_PATH="$DMG_DIR/${APP_NAME}_${VERSION}_${TARGET_ARCH}.dmg" STAGING_DIR=$(mktemp -d "${TMPDIR:-/tmp}/crosssubtitle-dmg.XXXXXX") cleanup() { rm -rf "$STAGING_DIR" } trap cleanup EXIT cd "$ROOT_DIR" export TARGET_ARCH npm run prepare-ffmpeg-macos npm run prepare-licenses-macos TAURI_BUILD_OPTS="--bundles app" if [ "$(uname -m)" != "$TARGET_ARCH" ]; then TAURI_BUILD_OPTS="$TAURI_BUILD_OPTS --target $RUST_TARGET" fi npm run tauri -- build $TAURI_BUILD_OPTS mkdir -p "$DMG_DIR" rm -f "$DMG_PATH" ditto "$APP_PATH" "$STAGING_DIR/$APP_NAME.app" ln -s /Applications "$STAGING_DIR/Applications" hdiutil create \ -volname "$APP_NAME" \ -srcfolder "$STAGING_DIR" \ -ov \ -format UDZO \ "$DMG_PATH" printf 'DMG created: %s\n' "$DMG_PATH"