#!/bin/bash
# FikoYT WASM Build Script
# Modern pipeline: cargo build + wasm-bindgen + wasm-opt

set -e

echo "Building FikoYT WASM module..."

# Check for Rust
if ! command -v rustc &> /dev/null; then
    echo "Rust not found! Install: https://rustup.rs"
    exit 1
fi

# Ensure WASM target is installed
rustup target add wasm32-unknown-unknown 2>/dev/null || true

# Step 1: Cargo build
echo "Step 1/3: cargo build (release)..."
cargo build --target wasm32-unknown-unknown --release

# Step 2: wasm-bindgen CLI
echo "Step 2/3: wasm-bindgen (JS bindings)..."
if ! command -v wasm-bindgen &> /dev/null; then
    echo "Installing wasm-bindgen-cli..."
    cargo install wasm-bindgen-cli
fi

mkdir -p pkg
wasm-bindgen \
  target/wasm32-unknown-unknown/release/fikoyt_wasm.wasm \
  --out-dir pkg \
  --target web \
  --typescript

# Step 3: wasm-opt (optional, skip if not installed)
echo "Step 3/3: wasm-opt (binary optimization)..."
if command -v wasm-opt &> /dev/null; then
    wasm-opt pkg/fikoyt_wasm_bg.wasm \
      -o pkg/fikoyt_wasm_bg.wasm \
      -Os \
      --enable-simd \
      --enable-bulk-memory
    echo "wasm-opt applied"
else
    echo "wasm-opt not found, skipping (install binaryen for smaller binary)"
fi

# Copy to Angular public assets
DEST_DIR="../public/assets/fikoyt-wasm"
mkdir -p "$DEST_DIR"
cp -v pkg/fikoyt_wasm* "$DEST_DIR/"
cp -v pkg/package.json "$DEST_DIR/" 2>/dev/null || true

echo ""
echo "WASM build complete!"
echo "Binary size:"
ls -lh "$DEST_DIR/fikoyt_wasm_bg.wasm"
echo ""
echo "Next step: Restart Angular dev server (npm start)"
