ENV ?= dev
export ENVIRONMENT = $(ENV)
# DB_PASSWORD/DB_ROOT_PASSWORD are stripped from what Compose loads — they
# only flow through secrets/ now, and Compose warns "variable not set" on
# any $-shaped value in --env-file even when nothing consumes it. Rewritten
# fresh on every `make` invocation, so it can't drift from .env.$(ENV).
# chmod 600 (not the 644 elsewhere in deploy/ — those get read by containers
# under a different UID; this one is only ever read by the `docker compose`
# CLI on the host, as $(ENV) invokes it, so there's no reason it needs to be
# world-readable) — and every target below removes it on the way out via a
# shell EXIT trap (same idiom deploy.sh/backup.sh already use for their own
# temp files), not a `; rm -f ...` tacked onto the end of the command. A
# real Ctrl+C on a long-running target (`logs -f`, an interactive `shell`)
# sends SIGINT to the recipe's whole foreground process group, which
# terminates a plain `cmd; rm -f ...` chain before the `;` ever runs — the
# EXIT trap fires regardless of *how* the shell exits (falls through, errors,
# or is killed by a signal), and doesn't touch $? either, so the underlying
# command's real exit code still propagates to `make`.
COMPOSE_ENV_FILE := .env.$(ENV).compose
$(shell grep -Ev '^(DB_PASSWORD|DB_ROOT_PASSWORD)=' .env.$(ENV) > $(COMPOSE_ENV_FILE) 2>/dev/null; chmod 600 $(COMPOSE_ENV_FILE) 2>/dev/null)
COMPOSE = docker compose -p bookstore-$(ENV) -f docker-compose.yml -f docker-compose.$(ENV).yml --env-file $(COMPOSE_ENV_FILE)
CLEANUP = trap 'rm -f $(COMPOSE_ENV_FILE)' EXIT;

.PHONY: up down ps logs shell wp deploy backup

up:
	$(CLEANUP) $(COMPOSE) up -d --build

down:
	$(CLEANUP) $(COMPOSE) down

ps:
	$(CLEANUP) $(COMPOSE) ps

logs:
	$(CLEANUP) $(COMPOSE) logs -f

# add -u root yourself for one-off root debugging (installing a package, etc.)
shell:
	$(CLEANUP) $(COMPOSE) exec -u www-data wordpress bash

# make wp ENV=staging ARGS="plugin list"
wp:
	$(CLEANUP) $(COMPOSE) exec -u www-data wordpress wp $(ARGS)

deploy:
	$(CLEANUP) ./deploy/deploy.sh $(ENV)

backup:
	$(CLEANUP) ./deploy/backup.sh $(ENV)
