75 lines
2.2 KiB
Makefile
75 lines
2.2 KiB
Makefile
# BiRefNet background removal service — CLI shortcuts.
|
|
# Override defaults inline, e.g.: make test BG=white INPUT=photo.jpg
|
|
|
|
COMPOSE ?= docker compose
|
|
PYTHON ?= python3
|
|
PORT ?= 8000
|
|
INPUT ?= test.jpg
|
|
OUTPUT ?= output.png
|
|
BG ?= alpha
|
|
BLUR ?= 0
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
.PHONY: help build run up stop down logs log ps test test-mask dev sync shell clean fmt drytestpub testpub bump
|
|
|
|
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 Docker 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
|
|
|
|
test: ## Send INPUT to the running service, save OUTPUT
|
|
$(PYTHON) scripts/client.py --url http://localhost:$(PORT) \
|
|
--input $(INPUT) --output $(OUTPUT) --background $(BG) --mask-blur $(BLUR)
|
|
|
|
test-mask: ## Like 'test' but also save the raw mask (mask.png)
|
|
$(PYTHON) scripts/client.py --url http://localhost:$(PORT) \
|
|
--input $(INPUT) --output $(OUTPUT) --background $(BG) \
|
|
--mask-blur $(BLUR) --mask-output mask.png
|
|
|
|
sync: ## Install dependencies locally with uv
|
|
uv sync
|
|
|
|
dev: sync ## Run the service locally (no Docker; needs local CUDA)
|
|
uv run rmbg-as-a-service
|
|
|
|
shell: ## Open a shell inside a fresh container
|
|
$(COMPOSE) run --rm --entrypoint bash rmbg
|
|
|
|
fmt: ## Format code with ruff
|
|
uv run ruff format src scripts
|
|
|
|
clean: ## Stop the service and remove build artifacts
|
|
-$(COMPOSE) down
|
|
rm -f $(OUTPUT) mask.png
|
|
|
|
bump: ## Bump the patch version in pyproject.toml (0.0.1 -> 0.0.2)
|
|
uv version --bump patch
|
|
|
|
drytestpub: ## Publish dist/ to TestPyPI (UV_PUBLISH_TOKEN from .env)
|
|
uv build && \
|
|
set -a && . ./.env && set +a && \
|
|
uv publish --publish-url https://test.pypi.org/legacy/ -t "$$UV_PUBLISH_TOKEN" --dry-run
|
|
|
|
testpub: ## Publish dist/ to TestPyPI (UV_PUBLISH_TOKEN from .env)
|
|
uv build && \
|
|
set -a && . ./.env && set +a && \
|
|
uv publish --publish-url https://test.pypi.org/legacy/ -t "$$UV_PUBLISH_TOKEN"
|
|
|
|
publish:
|
|
rm -rf dist/ && uv build && uv publish
|