.RECIPEPREFIX := >
.DEFAULT_GOAL := help

# Defaults you can override: make report-top SEASON=2025 WEEKS=1-3
PY ?= python
VENV ?= .venv
ACT := source $(VENV)/bin/activate
SEASON ?= 2025
WEEKS  ?= 1-3
GROUP  ?=
TOP    ?= 10
MIN_WEEKS ?=

## help: List available targets
help:
> @grep -E "^[a-zA-Z0-9_.-]+:.*?##" Makefile | awk -F":|##" '{printf "  %-15s %s\n", $$1, $$NF}' | sort

## venv: Create local virtualenv (.venv)
venv:
> @test -d $(VENV) || $(PY) -m venv $(VENV)

## fmt: Run Black formatter
fmt:
> $(ACT); black .

## lint: Run Ruff linter
lint:
> $(ACT); ruff .

## test: Run unit tests (fallback to pytest if script missing)
test:
> $(ACT); ( ./scripts/ci.sh test || pytest -q )

## contracts: Run contract tests (fallback to pytest contract dir)
contracts:
> $(ACT); ( ./scripts/ci.sh contracts || pytest -q tests/contract )

## ci: fmt + lint + tests + contracts
ci: fmt lint test contracts

## report-top: Pull sample data and print a top summary
report-top:
> $(ACT); \
> $(PY) -m fppull.cli.pull_range --season $(SEASON) --weeks $(WEEKS) --out-dir data/processed; \
> IN=data/processed/season_$(SEASON)_joined.csv; \
> GB=""; [ -n "$(GROUP)" ] && GB="--group-by $(GROUP)"; \
> MW=""; [ -n "$(MIN_WEEKS)" ] && MW="--min-weeks $(MIN_WEEKS)"; \
> $(PY) -m fppull.cli.report_top --in "$$IN" $$GB $$MW --top $(TOP)

## release-tag: Create & push tag vX.Y.Z (use like: make release-tag V=1.0.1)
release-tag:
> @[ -n "$(V)" ] || { echo "Usage: make release-tag V=1.0.1"; exit 1; }
> git tag -a v$(V) -m v$(V) && git push origin v$(V)

## release-verify: Check GH release assets + PyPI version (V required)
release-verify:
> @[ -n "$(V)" ] || { echo "Usage: make release-verify V=1.0.1"; exit 1; }
> @OWNER_REPO=$$(git config --get remote.origin.url | sed -E 's#.*/([^/]+/[^/]+)\.git#\1#'); \
> echo "== GitHub Release assets for v$(V) =="; \
> gh release view v$(V) --repo "$$OWNER_REPO" --json assets --jq '.assets[].name'; \
> echo; echo "== PyPI latest =="; \
> python -c 'import json, urllib.request as u; print(json.load(u.urlopen("https://pypi.org/pypi/fppull/json", timeout=10))["info"]["version"])'

.PHONY: help venv fmt lint test contracts ci report-top release-tag release-verify
