#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd -- "$SCRIPT_DIR/.." && pwd)"
OUT_DIR="${1:-$REPO_ROOT/.local/tmp/tc-out}"
BRIDGE="${BRIDGE:-br0}"
MAC="${MAC:-52:54:00:12:34:56}"

if [[ ! -f "$OUT_DIR/tinycore-sqlite-wasm.iso" && ! -f "$OUT_DIR/vmlinuz64" ]]; then
  echo "Usage: [BRIDGE=br0] $0 <image-dir>" >&2
  exit 1
fi

echo "Booting TinyCore WASI SQLite appliance on bridged interface '$BRIDGE'..." >&2
echo "Ensure '$BRIDGE' is permitted in /etc/qemu/bridge.conf (e.g., 'allow $BRIDGE')." >&2

if [[ -f "$OUT_DIR/tinycore-sqlite-wasm.iso" && "${BOOT_MODE:-direct}" = "iso" ]]; then
  exec qemu-system-x86_64 \
    -m 512M \
    -smp 2 \
    -nographic \
    -drive "file=$OUT_DIR/tinycore-sqlite-wasm.iso,format=raw,if=virtio" \
    -netdev "bridge,id=net0,br=${BRIDGE}" \
    -device "virtio-net-pci,netdev=net0,mac=${MAC}"
fi

exec qemu-system-x86_64 \
  -m 512M \
  -smp 2 \
  -nographic \
  -kernel "$OUT_DIR/vmlinuz64" \
  -initrd "$OUT_DIR/tinycore-sqlite-wasm.gz" \
  -append "console=ttyS0,115200 loglevel=3" \
  -netdev "bridge,id=net0,br=${BRIDGE}" \
  -device "virtio-net-pci,netdev=net0,mac=${MAC}"
