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

cd "$(dirname "$0")/.."

packages=(
  build-essential clang cmake curl pkg-config
  libfontconfig1-dev libssl-dev libvulkan-dev libwayland-dev
  libx11-xcb-dev libxcb-shape0-dev libxcb-xfixes0-dev
  libxkbcommon-dev libxkbcommon-x11-dev
)
missing=()
for package in "${packages[@]}"; do
  if [[ "$(dpkg-query -W -f='${Status}' "$package" 2>/dev/null || true)" != "install ok installed" ]]; then
    missing+=("$package")
  fi
done
if ((${#missing[@]})); then
  echo "Installing GPUI system libraries: ${missing[*]}"
  sudo apt-get update -qq
  sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq "${missing[@]}"
fi

if ! command -v rustup >/dev/null; then
  echo "Installing Rust"
  curl --fail --silent --show-error https://sh.rustup.rs | sh -s -- -y --profile minimal
fi
export PATH="$HOME/.cargo/bin:$PATH"
echo "Installing pinned Rust toolchain and fetching crates"
rustup toolchain install 1.98.1 --profile minimal
rustup component add rustfmt --toolchain 1.98.1
cargo fetch --locked

echo "Installing Mermaid renderer"
if command -v google-chrome >/dev/null; then
  PUPPETEER_SKIP_DOWNLOAD=1 npm ci --no-audit --no-fund
else
  npm ci --no-audit --no-fund
fi
echo "Vool orb setup complete"
