#!/bin/bash

set -e

# Define output path
OUTPUT_DIR="../../../out/launcher"
APP_LAUNCHER="$OUTPUT_DIR/Anki.app"
rm -rf "$APP_LAUNCHER"

# Build binaries for both architectures
rustup target add aarch64-apple-darwin x86_64-apple-darwin
cargo build -p launcher --release --target aarch64-apple-darwin
cargo build -p launcher --release --target x86_64-apple-darwin
(cd ../../.. && ./ninja launcher:uv_universal)

# Ensure output directory exists
mkdir -p "$OUTPUT_DIR"

# Remove existing app launcher
rm -rf "$APP_LAUNCHER"

# Create app launcher structure
mkdir -p "$APP_LAUNCHER/Contents/MacOS" "$APP_LAUNCHER/Contents/Resources"

# Copy binaries in
TARGET_DIR=${CARGO_TARGET_DIR:-target}
lipo -create \
    "$TARGET_DIR/aarch64-apple-darwin/release/launcher" \
    "$TARGET_DIR/x86_64-apple-darwin/release/launcher" \
    -output "$APP_LAUNCHER/Contents/MacOS/launcher"
cp "$OUTPUT_DIR/uv" "$APP_LAUNCHER/Contents/MacOS/"

# Build install_name_tool stub
clang -arch arm64 -o "$OUTPUT_DIR/stub_arm64" stub.c
clang -arch x86_64 -o "$OUTPUT_DIR/stub_x86_64" stub.c
lipo -create "$OUTPUT_DIR/stub_arm64" "$OUTPUT_DIR/stub_x86_64" -output "$APP_LAUNCHER/Contents/MacOS/install_name_tool"
rm "$OUTPUT_DIR/stub_arm64" "$OUTPUT_DIR/stub_x86_64"

# Copy support files
ANKI_VERSION=$(cat ../../../.version | tr -d '\n')
sed "s/ANKI_VERSION/$ANKI_VERSION/g" Info.plist > "$APP_LAUNCHER/Contents/Info.plist"
cp icon/Assets.car "$APP_LAUNCHER/Contents/Resources/"
cp ../pyproject.toml "$APP_LAUNCHER/Contents/Resources/"
cp ../../../.python-version "$APP_LAUNCHER/Contents/Resources/"
cp ../versions.py "$APP_LAUNCHER/Contents/Resources/"

# Codesign/bundle
if [ -z "$NODMG" ]; then
    for i in "$APP_LAUNCHER/Contents/MacOS/uv" "$APP_LAUNCHER/Contents/MacOS/install_name_tool" "$APP_LAUNCHER/Contents/MacOS/launcher" "$APP_LAUNCHER"; do
        codesign --force -vvvv -o runtime -s "Developer ID Application:" \
        --entitlements entitlements.python.xml \
        "$i"
    done

    # Check
    codesign -vvv "$APP_LAUNCHER"
    spctl -a "$APP_LAUNCHER"

    # Notarize and build dmg
    ./notarize.sh "$OUTPUT_DIR"
    ./dmg/build.sh "$OUTPUT_DIR"
fi