.PHONY: build run chat test lint fmt vet check evolve install clean test-coverage benchmark evaluate

VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")

build:
	go build -ldflags "-X main.iterateVersion=$(VERSION)" -o iterate ./cmd/iterate

run: build
	./iterate

chat:
	go run ./cmd/iterate

evolve: build
	./iterate --evolve --repo .

test:
	go test ./...

test-coverage:
	go test -coverprofile=coverage.out ./...
	@echo "=== Coverage Summary ==="
	@go tool cover -func=coverage.out | tail -1
	@echo "=== Coverage by file ==="
	@go tool cover -func=coverage.out

benchmark:
	go test -bench=. -benchmem -count=3 ./...

lint:
	go vet ./...

fmt:
	go fmt ./...

vet:
	go vet ./...

check: fmt vet build test

install:
	go install ./cmd/iterate

evaluate:
	@echo "=== Running SWE-bench evaluation ==="
	@mkdir -p swe_bench_results
	@go run scripts/swe_bench_runner.go --model gemini --max-tasks 10 || echo "Evaluation requires SWE-bench dataset (will be auto-downloaded on first run)"

clean:
	rm -f iterate coverage.out
	rm -rf .iterate/worktrees
	rm -rf swe_bench_results
	rm -f .iterate/pr_state.json .iterate/evolution.log .iterate/ci_status.txt coverage.out
