# mindthemath/rmbg image — build the published-package container, test it, push it.
# Override inline, e.g.:  make release TAG=0.0.2

COMPOSE ?= docker compose
PYTHON  ?= python3
IMAGE   ?= mindthemath/rmbg
TAG     ?= latest
PORT    ?= 8000
INPUT   ?= ../test.jpg
OUTPUT  ?= output.png
BG      ?= alpha

# Exported so compose.yml's ${TAG} interpolation picks it up.
export TAG

.DEFAULT_GOAL := help

.PHONY: help build run up stop down logs log ps shell test push release clean

help: ## Show this help
	@grep -E '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) \
		| awk 'BEGIN{FS=":.*?## "}{printf "  \033[36m%-12s\033[0m %s\n", $$1, $$2}'

build: ## Build the mindthemath/rmbg image
	$(COMPOSE) build

run up: ## Start the service (GPU) in the background
	$(COMPOSE) up -d

stop down: ## Stop and remove the service container
	$(COMPOSE) down

logs log: ## Follow service logs
	$(COMPOSE) logs -f

ps: ## Show service status
	$(COMPOSE) ps

shell: ## Open a shell inside a fresh container
	$(COMPOSE) run --rm --entrypoint bash rmbg

test: ## Send INPUT to the running service, save OUTPUT
	$(PYTHON) ../scripts/client.py --url http://localhost:$(PORT) \
		--input $(INPUT) --output $(OUTPUT) --background $(BG)

push: build ## Push mindthemath/rmbg:$(TAG) to Docker Hub (needs docker login)
	docker push $(IMAGE):$(TAG)

release: build push ## Build then push mindthemath/rmbg:$(TAG)

clean: ## Stop the service and remove the built image
	-$(COMPOSE) down
	-docker image rm $(IMAGE):$(TAG)
