COMPOSE := docker compose

.PHONY: env recreate rebuild restart logs down fmt check build dev

fmt:
	bun run fix

check:
	bun run check
	bun run lint

build:
	$(COMPOSE) build frontend

dev:
	bun run dev

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
