.PHONY: dev frontend-royalties build validate seed_db refresh_auth clone_repos setup_repos update_repos_deps wait_ready add_upstreams rebase_repos restart_services

dev: .env
	DOCKER_BUILDKIT=1 docker compose up

frontend-royalties: .env refresh_auth
	DOCKER_BUILDKIT=1 docker compose up frontend-royalties

db: refresh_auth
	DOCKER_BUILDKIT=1 docker compose up abacus-contract-mysql abacus-contract-liquibase-runner

build: .env refresh_auth clone_repos setup_repos update_repos_deps
	DOCKER_BUILDKIT=1 docker compose up --build

clean:
	docker compose down --volumes --remove-orphans
	docker system prune -f
	docker volume prune -f

validate:
	docker compose config --quiet

seed_db:
	docker compose up abacus-contract-seeder

refresh_auth:
	aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 437795906767.dkr.ecr.us-east-1.amazonaws.com
	aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 086679231553.dkr.ecr.us-east-1.amazonaws.com

wait_ready:
	nc -l 9999 && zsh scripts/test-connectivity.sh

.env:
	@if [ -z "$$GITHUB_NPM_TOKEN" ]; then \
	  echo "GITHUB_NPM_TOKEN is not set in the environment"; \
	  exit 1; \
	fi; \
	cp .env.shadow .env
	sed -i.bak "s/^GITHUB_NPM_TOKEN=\".*\"/GITHUB_NPM_TOKEN=\"$$GITHUB_NPM_TOKEN\"/" .env && rm -f .env.bak

clone_repos:
	./scripts/integrator.sh clone_repo

setup_repos:
	./scripts/integrator.sh setup_repo

update_repos_deps:
	./scripts/integrator.sh update_deps

add_upstreams:
	./scripts/integrator.sh add_upstream

rebase_repos: add_upstreams
	./scripts/integrator.sh rebase_repo && $(MAKE) update_repos_deps && $(MAKE) restart_services

restart_services:
	@if [ -n "$$(docker compose ps -q)" ]; then \
		echo "Restarting running services..."; \
		docker compose ps -q | xargs docker restart; \
	else \
		echo "No running compose containers to restart."; \
	fi

integration:
	[ ! -f "./integrations/$(NAME).sh" ] \
		&& echo "echo 'TODO: integrate $(NAME)'"  > "./integrations/$(NAME).sh" \
		&& cat ./templates/integration.txt >> "./integrations/$(NAME).sh" \
		|| echo "Integration '$(NAME)' already exists.";
