# Pipeline completo. Cada paso deja su resultado en data/interim o en out/,
# así que se puede reejecutar solo la parte que interese.
PY := ./.venv/bin/python

.PHONY: all datos rasters modelo salidas cobertura revisar selector limpio

all: datos rasters modelo salidas revisar

## --- descargas (~2,5 GB, una vez) ---
datos:
	bash src/dl_osm.sh
	bash src/dl_dem.sh
	$(PY) src/dl_protected.py

## --- extracción y rásters ---
rasters:
	$(PY) src/extract_osm.py
	$(PY) src/extract_areas.py
	$(PY) src/extract_extra.py
	$(PY) src/dem_terrain.py
	$(PY) src/build_rasters.py
	$(PY) src/build_protected.py
	$(PY) src/build_rasters2.py

## --- modelo de estrellas ---
# score.py deja iso_pure.npy y score_rave.tif, que necesitan los mapas.
modelo:
	$(PY) src/score.py
	$(PY) src/stars.py

## --- visor, informe y mapas ---
salidas:
	$(PY) src/render_relief.py
	$(PY) src/render_map.py
	$(PY) -c "import sys; sys.path.insert(0,'src'); import config as C; \
	  from PIL import Image; \
	  [Image.open(C.OUT/f'{n}.png').save(C.OUT/f'{n}.webp','WEBP',quality=q,method=6) \
	   for n,q in (('relieve',88),('protegidos',80),('aislamiento_ov',80))]"
	$(PY) src/dl_orthos.py
	$(PY) src/build_viewer.py
	$(PY) src/report.py

## --- mapa de cobertura para la wiki ---
cobertura:
	mkdir -p data/raw/ne
	cd data/raw/ne && for f in 50m/raster/NE1_50M_SR_W 10m/cultural/ne_10m_admin_0_countries; do \
	  n=$$(basename $$f); [ -f $$n.zip ] || curl -sfL -o $$n.zip https://naciscdn.org/naturalearth/$$f.zip; \
	  unzip -o -q $$n.zip; done
	$(PY) src/render_europe.py

## --- comprobación de coherencia del resultado ---
revisar:
	$(PY) src/revisar.py

## --- desplegable de país ---
# Cada visor congela la lista de países al construirse, así que al calcular uno
# nuevo hay que rehacer el selector de los demás.
selector:
	$(PY) src/paises.py

limpio:
	rm -rf out/*.html out/*.png out/*.webp out/ortho
