#!/usr/bin/env bash
# Run the full acceptance pipeline: parse -> generate -> run
# Usage: run-acceptance [feature-file ...]

set -euo pipefail

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

cd "$PROJECT_ROOT"

# Steps file mapping: feature-basename -> steps filename
declare -A STEPS_MAP
STEPS_MAP["scaffold_cli"]="scaffold_cli_steps.rs"
STEPS_MAP["duplicate_detection"]="duplicate_detection_steps.rs"
STEPS_MAP["cli_surface"]="cli_surface_steps.rs"

# Default to all feature files
if [[ $# -eq 0 ]]; then
    FEATURES=("features/scaffold_cli.feature" "features/duplicate_detection.feature" "features/cli_surface.feature")
else
    FEATURES=("$@")
fi

mkdir -p tmp/acceptance/ir

for FEATURE in "${FEATURES[@]}"; do
    BASENAME=$(basename "$FEATURE" .feature)
    IR_FILE="tmp/acceptance/ir/${BASENAME}.json"
    STEPS_FILE="${STEPS_MAP[$BASENAME]:-scaffold_cli_steps.rs}"

    echo "==> Parsing: $FEATURE"
    gherkin-parser "$FEATURE" "$IR_FILE"

    echo "==> Generating: $IR_FILE -> tests/ (steps: $STEPS_FILE)"
    "$SCRIPT_DIR/acceptance-entrypoint-generator" --steps "$STEPS_FILE" --feature-path "$FEATURE" "$IR_FILE" tests
done

echo "==> Building release binary"
cargo build --release

echo "==> Running acceptance tests"
cargo nextest run --profile acceptance
