61 lines
1.4 KiB
Bash
61 lines
1.4 KiB
Bash
#!/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"
|