{%- set svc_modules = [] -%} {%- if 'api' in backend_services %}{% set _ = svc_modules.append("api") %}{% endif -%} {%- if 'aiogram_bot' in backend_services %}{% set _ = svc_modules.append("bot") %}{% endif -%} {%- if 'taskiq_worker' in backend_services %}{% set _ = svc_modules.append("worker") %}{% endif -%} {%- if 'kurigram_userbot' in backend_services %}{% set _ = svc_modules.append("userbot") %}{% endif -%} {%- if 'scheduler' in backend_services and 'taskiq_worker' not in backend_services %}{% set _ = svc_modules.append("scheduler") %}{% endif -%} {%- set has_script = dynamic_config and svc_modules -%} COMPOSE := {% if layout == 'part' %}cd .. && {% endif %}docker compose .PHONY: {% if layout == 'root' %}env recreate rebuild restart logs down {% endif %}fmt check{% if svc_modules %} build{% endif %}{% if database == 'postgres' %} migrate revision{% endif %}{% if has_script %} script{% endif %}{% if 'kurigram_userbot' in backend_services %} session{% endif %} fmt: uv run ruff format uv run ruff check --fix check: uv run ruff format --check uv run ruff check uv run ty check {% if svc_modules %} uv run python scripts/check_imports.py {% endif %}{% if svc_modules %} build: $(COMPOSE) build {{ svc_modules[0] }} {% endif %}{% if layout == 'root' %} env: @fresh=; test -f .env || { cp .env.example .env; fresh=1; }; \ if ! test -f docker-compose.override.yml; then \ cp docker-compose.override.yml.example docker-compose.override.yml; \ for port in $$(sed -n 's/.*127\.0\.0\.1:\([0-9]*\):.*/\1/p' docker-compose.override.yml | sort -u); do \ random=$$((20000 + $$(od -An -N2 -tu2 /dev/urandom) % 40000)); \ sed "s/127\.0\.0\.1:$$port:/127.0.0.1:$$random:/" docker-compose.override.yml > docker-compose.override.yml.tmp && mv docker-compose.override.yml.tmp docker-compose.override.yml; \ test -z "$$fresh" || { sed "s|localhost:$$port/|localhost:$$random/|" .env > .env.tmp && mv .env.tmp .env; }; \ done; \ fi recreate: $(COMPOSE) up -d --force-recreate rebuild: build $(COMPOSE) up -d restart: $(COMPOSE) restart logs: $(COMPOSE) logs -f --tail=100 down: $(COMPOSE) down {% endif %}{% if database == 'postgres' %} migrate: $(COMPOSE) run --rm migrator $(or $(filter-out $@,$(MAKECMDGOALS)),upgrade head) revision: $(COMPOSE) run --rm migrator revision --autogenerate -m "$(m)" {% endif %}{% if has_script %} script: @$(COMPOSE) run --rm {{ svc_modules[0] }} scripts.$(word 2,$(MAKECMDGOALS)) $(wordlist 3,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) {% endif %}{% if database == 'postgres' or has_script %} %: @: {% endif %}{% if 'kurigram_userbot' in backend_services %} session: uv run python scripts/session/create.py {% endif %}