.PHONY: default build clean release require_clean_git


-include .env

VERSION=20230416
IMAGENAME=restic
REPO=git.rre.nu/jonas
TITLE=restic with openSSH based on openSUSE Tumpleweed
DESC=Image containing restic & openSSH, based on openSUSE Tumbleweed

SHELL := /bin/bash

default: build

require_clean_git:
	git update-index -q --ignore-submodules --refresh
	git diff-files --quiet --ignore-submodules
	git diff-index --cached --quiet --ignore-submodules HEAD --
	@status=$$(git status --porcelain); \
	if test "x$${status}" = x; then \
		echo "No untracked files detected"; \
	else \
		echo "Untracked files detected" >&2; \
		exit 1; \
	fi

build:
	podman build \
		--build-arg VERSION="$(VERSION)" \
		--label org.opencontainers.image.source="https://${REPO}/${IMAGENAME}/src/tag/v${VERSION}" \
		--label org.opencontainers.image.title="${TITLE}" \
		--label org.opencontainers.image.description="${DESC}" \
		--label org.opencontainers.image.created="$(shell TZ=UTC date --iso-8601=ns)" \
		--label org.opencontainers.image.url="https://${REPO}/-/packages/container/${IMAGENAME}/${VERSION}" \
		--label org.opencontainers.image.version="${VERSION}" \
		--label org.opencontainers.image.vendor="Jonas Forsberg" \
		--tag ${REPO}/${IMAGENAME}:$(VERSION) \
		.

clean:
	podman image rm ${REPO}/${IMAGENAME}:$(VERSION)

release: require_clean_git build
	$(eval TMP_MESSAGE := $(shell podman run --rm -it ${REPO}/${IMAGENAME}:$(VERSION) /usr/bin/restic --version))
	git tag -a v$(VERSION) -m "restic version: ${TMP_MESSAGE}"
	git push origin v$(VERSION)
	podman tag ${REPO}/${IMAGENAME}:$(VERSION) ${REPO}/${IMAGENAME}:latest
	@ echo "Pushing images"
	@ podman push --creds $(USERNAME):$(PASSWORD) ${REPO}/${IMAGENAME}:$(VERSION)
	@ podman push --creds $(USERNAME):$(PASSWORD) ${REPO}/${IMAGENAME}:latest