SHELL := /usr/bin/env bash
.SHELLFLAGS := -euo pipefail -c
IMAGE_TAG ?= local

.PHONY: build build-server build-deb-builder lint hadolint shellcheck helm-lint helm-template test chart-package compose-test-up compose-test-down clean

build: build-server build-deb-builder

build-server:
	docker build -f images/aptly-server/Dockerfile -t aptly-server:$(IMAGE_TAG) .

build-deb-builder:
	docker build -f images/aptly-deb-builder/Dockerfile -t aptly-deb-builder:$(IMAGE_TAG) .

lint: hadolint shellcheck helm-lint helm-template

hadolint:
	docker run --rm -i hadolint/hadolint < images/aptly-server/Dockerfile
	docker run --rm -i hadolint/hadolint < images/aptly-deb-builder/Dockerfile

shellcheck:
	docker run --rm -v "$$PWD:/work" -w /work koalaman/shellcheck:stable -x \
		rootfs/usr/local/bin/aptly-* rootfs/usr/local/bin/lib/common.sh tests/smoke-test.sh

helm-lint:
	helm lint charts/aptly

helm-template:
	helm template test charts/aptly >/dev/null
	for f in charts/aptly/ci/*.yaml; do \
		echo "-- $$f --"; \
		helm template test charts/aptly -f "$$f" >/dev/null; \
	done

test:
	./tests/smoke-test.sh

chart-package:
	helm package charts/aptly --destination dist/

compose-test-up:
	docker compose -f compose/docker-compose.test.yaml up -d --build

compose-test-down:
	docker compose -f compose/docker-compose.test.yaml down -v

clean: compose-test-down
	docker compose -f compose/docker-compose.yaml down -v 2>/dev/null || true
	rm -rf dist/
