#!/usr/bin/env bash
# Run ruff check and format across all Lambda functions.
# Usage:
#   ./scripts/lint.sh          -- check only (no modifications)
#   ./scripts/lint.sh --fix    -- check + auto-fix + reformat
set -euo pipefail

REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"

shopt -s nullglob
lambda_dirs=("$REPO_ROOT"/lambda/*/)
shopt -u nullglob

if [[ ${#lambda_dirs[@]} -eq 0 ]]; then
    echo "No Lambda directories found under lambda/ — nothing to lint."
    exit 0
fi

failed=0

for lambda_dir in "${lambda_dirs[@]}"; do
    lambda="$(basename "$lambda_dir")"
    echo "Linting $lambda..."

    if [[ "${1:-}" == "--fix" ]]; then
        (cd "$lambda_dir" && uv run ruff check --fix .) || failed=1
        (cd "$lambda_dir" && uv run ruff format .) || failed=1
    else
        (cd "$lambda_dir" && uv run ruff check .) || failed=1
        (cd "$lambda_dir" && uv run ruff format --check .) || failed=1
    fi
done

if [[ $failed -ne 0 ]]; then
    echo "Linting failed for one or more Lambdas." >&2
    exit 1
fi

echo "Linting complete!"
