.PHONY: install test lint run openapi migrate-validate deployed-smoke stabilization-check operator-cli staging-profile-check container-build playwright-install visual-check ecosystem-regression hub-core-pin

ECOSYSTEM_REGRESSION ?= /home/worsch/the-custodian/scripts/hub-ecosystem-regression.sh
HUB_CORE_ROOT ?= /home/worsch/hub-core

UV ?= /home/worsch/.local/bin/uv
PYTHONPATH ?= src
IMAGE_REPOSITORY ?= forgejo.coulomb.social/coulomb/core-hub
IMAGE_TAG ?= dev
CLI_ARGS ?=

install:
	$(UV) sync --extra dev

test:
	PYTHONPATH=$(PYTHONPATH) $(UV) run python -m pytest

hub-core-pin:
	$(UV) run python -c "import hub_core; print(hub_core.__version__)"

ecosystem-regression:
	bash $(ECOSYSTEM_REGRESSION)

lint:
	PYTHONPATH=$(PYTHONPATH) $(UV) run --extra dev ruff check .

run:
	PYTHONPATH=$(PYTHONPATH) $(UV) run uvicorn core_hub.app:app --reload --host 127.0.0.1 --port 8010

openapi:
	PYTHONPATH=$(PYTHONPATH) $(UV) run python scripts/export_openapi.py contracts/openapi/core-hub.openapi.json


migrate-validate:
	PYTHONPATH=$(PYTHONPATH) $(UV) run --extra dev python scripts/core_hub_migrate.py validate contracts/fixtures/migration/interhub-minimal.bundle.json

deployed-smoke:
	PYTHONPATH=$(PYTHONPATH) $(UV) run --extra dev python scripts/core_hub_deployed_smoke.py

stabilization-check:
	bash scripts/core_hub_stabilization_check.sh

operator-cli:
	PYTHONPATH=$(PYTHONPATH) $(UV) run --extra dev python scripts/core_hub_cli.py $(CLI_ARGS)

staging-profile-check:
	PYTHONPATH=$(PYTHONPATH) $(UV) run --extra dev python scripts/check_staging_profile.py

container-build:
	rm -rf .docker-hub-core
	mkdir -p .docker-hub-core
	cp $(HUB_CORE_ROOT)/pyproject.toml .docker-hub-core/
	cp -r $(HUB_CORE_ROOT)/hub_core .docker-hub-core/
	docker build --build-context hub_core_src=.docker-hub-core \
		--build-arg DEPS_LOCK_ID=2 \
		-t $(IMAGE_REPOSITORY):$(IMAGE_TAG) .

playwright-install:
	$(UV) run --extra dev playwright install chromium

visual-check:
	PYTHONPATH=$(PYTHONPATH) $(UV) run --extra dev python scripts/check_console_visual.py
