#!/usr/bin/env bash
# tooling/install-rust — Install Rust via rustup and add required components
#
# Usage:
#   ./tooling/install-rust
#
# Installs rustup + stable toolchain if not present, then ensures
# clippy and rustfmt components are installed. Idempotent.

set -euo pipefail

if command -v rustup >/dev/null 2>&1; then
    echo "Rust already installed: $(rustc --version)"
    rustup component add clippy rustfmt 2>/dev/null
    echo "Components verified: clippy, rustfmt"
    exit 0
fi

echo "Installing Rust via rustup..."

if ! command -v curl >/dev/null 2>&1; then
    echo "Error: curl is required to install Rust."
    exit 1
fi

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --component clippy rustfmt

# Source cargo env for the rest of this script
# shellcheck source=/dev/null
. "$HOME/.cargo/env"

echo "Rust installed: $(rustc --version)"
echo "Components: clippy, rustfmt"
