#!/usr/bin/make -f
STARTURL ?= https://updates.safing.io/latest/linux_amd64/start/portmaster-start\?CI
NFPM ?= nfpm

.PHONY: icons test-debian test-ubuntu  nfpm.yaml

all: deb rpm gen-pkgbuild gen-archive

nfpm.yaml: portmaster-start
	sed -e "s/^version:.*$$/version: v$(shell ./portmaster-start version --short)-$(shell cat ./pkgrev)/g" ./nfpm.yaml.template > ./nfpm.yaml

build: icons nfpm.yaml gen-scripts gen-pkgbuild

icons:
	for res in 16 32 48 96 128 ; do \
		mkdir -p icons/$${res}x$${res} ; \
		convert ./portmaster_logo.png -resize "$${res}x$${res}" "icons/$${res}x$${res}/portmaster.png" ; \
	done

portmaster-start:
	curl --fail --user-agent GitHub -o portmaster-start $(STARTURL)
	chmod +x ./portmaster-start

deb: distdir build
	$(NFPM) package --packager deb -t dist

rpm: distdir build
	$(NFPM) package --packager rpm -t dist

distdir:
	mkdir -p ./dist

clean:
	rm -r ./portmaster-start ./scripts ./dist icons/ PKGBUILD arch.install nfpm.yaml src pkg  portmaster-stub-bin-*.pkg.tar.xz archive.install || true

test-debian: build deb
	docker run -ti --rm -v $(shell pwd)/dist:/work -w /work debian:latest bash -c 'apt update && apt install -y ca-certificates && dpkg -i /work/portmaster*.deb ; bash'

test-ubuntu: build deb
	docker run -ti --rm -v $(shell pwd)/dist:/work -w /work ubuntu:latest bash -c 'apt update && apt install -y ca-certificates && dpkg -i /work/portmaster*.deb ; bash'

increase-pkgrev:
	bash -c 'rev=$$(cat pkgrev) ; ((rev++)) ; echo $${rev} > ./pkgrev'

reset-pkgrev:
	echo 1 > ./pkgrev

gen-scripts: 
	mkdir -p ./scripts
	for file in "rules" "preinstall.sh" "postinstall.sh" "preremove.sh" "postremove.sh"; do \
		gomplate -f "templates/$${file}" > "./scripts/$${file}" ; \
	done;

gen-pkgbuild: nfpm.yaml
	gomplate -d "nfpm=./nfpm.yaml" -f templates/arch.install > arch.install
	gomplate -d "nfpm=./nfpm.yaml" -f templates/PKGBUILD > PKGBUILD

gen-archive: nfpm.yaml icons
	gomplate -d "nfpm=./nfpm.yaml" -f templates/no-log-install.sh > archive.install
	gomplate -d "nfpm=./nfpm.yaml" -f templates/create-archive.sh | bash

lint:
	shellcheck ./scripts/* ./arch.install 
