set shell := ["bash", "-euo", "pipefail", "-c"]

default: build

ensure-rescript-bin:
    yarn install

build:
    yarn build

test: build ensure-rescript-bin
    ./test.sh

# Order-independence test for reanalyze. Not run by default since it takes longer.
test-reanalyze-order-independence: build ensure-rescript-bin
    ./test-order-independence.sh

# Reactive server test for incremental analysis correctness.
test-reactive-server: build ensure-rescript-bin
    ./test-reactive-server.sh --iterations 3

# Same test on the benchmark project (larger codebase).
test-reactive-server-benchmark:
    cd ../deadcode-benchmark && yarn build
    ./test-reactive-server.sh --project ../deadcode-benchmark --iterations 1

benchmark: build
    @echo "=== Benchmark on existing test files ==="
    @echo ""
    @echo "Sequential:"
    @time dune exec rescript-tools -- reanalyze -config -ci 2>/dev/null | grep "Analysis reported"

clean:
    yarn clean

secret-scan-trufflehog:
    @command -v trufflehog >/dev/null && trufflehog filesystem . --only-verified || true
