#########################################################################
# Docker build environment for BitmaskVPN
# (c) LEAP Encryption Access Project, 2019-2020
#########################################################################

IMAGE=bitmask-vpn
REGISTRY=registry.0xacab.org/leap

PROVIDER=riseup
PRODUCT=$(shell echo $(PROVIDER) | sed -e "s/\b\(.\)/\u\1/g")VPN

UNINSTALLER_NSIS="../deploy/produce-bitmask-uninstaller.exe"
UNINSTALLER_WINE=".wine/drive_c/bitmask-uninstall.exe"
UNINSTALLER_STAGING="../build/windows/staging/uninstall.exe"
UNINSTALLER_SIGNED="../build/windows/staging/uninstall-signed.exe"
SIGNCODE=osslsigncode
SECRETS="leap/secrets/windoze"

build: 
	mkdir -p mods && cp ../go.mod ../go.sum mods/ && cp -r ../packages mods/
	docker build -t $(REGISTRY)/$(IMAGE):latest .
deps:
	sudo apt install osslsigncode
push:
	docker push $(REGISTRY)/$(IMAGE):latest
prune:
	docker system prune
login:
	docker login $(REGISTRY)

package_snap:
	docker run \
	    -e PROVIDER=$(PROVIDER) \
	    -e TYPE=snap \
	    -v `python3 -c 'import os; print(os.path.abspath(".."))'`:/bitmask-vpn.host \
	    --cpus="4" \
	    -it --rm \
	    $(REGISTRY)/$(IMAGE):latest  \
	    /builder.sh


package_win: clean_win package_win_stage_1 sign_win_uninstaller_in_host package_win_stage_2 sign_win_installer_in_host

clean_win:
	@rm -f ../deploy/*.exe

package_win_stage_1:
	docker run \
	    -e PROVIDER=$(PROVIDER) \
	    -e XBUILD=win \
	    -e STAGE=1 \
	    -v `python3 -c 'import os; print(os.path.abspath(".."))'`:/bitmask-vpn.host \
	    --cpus="4" \
	    -it --rm \
	    $(REGISTRY)/$(IMAGE):latest  \
	    /builder.sh

sign_win_uninstaller_in_host:
	@rm -f $(UNINSTALLER_STAGING)
	@rm -f $(UNINSTALLER_WINE)
	@echo "[+] running nsis uninstaller under wine..."
	@wine $(UNINSTALLER_NSIS) || echo "[+] wine finished (it exits badly)"
	@cp ~/$(UNINSTALLER_WINE) $(UNINSTALLER_STAGING) && echo "[+] copied uninstaller to staging dir:" $(UNINSTALLER_STAGING)
	@$(SIGNCODE) sign \
	    -certs ~/$(SECRETS)/win.crt \
	    -key ~/$(SECRETS)/key.pem \
	    -pass `gpg --decrypt ~/$(SECRETS)/../windoze.gpg` \
	    -n "$(PRODUCT) Uninstaller" -i "https://leap.se/" \
	    -in $(UNINSTALLER_STAGING) \
	    -out $(UNINSTALLER_SIGNED)
	@echo "[+] signed uninstaller in:" $(UNINSTALLER_SIGNED)

package_win_stage_2:
	docker run \
	    -e PROVIDER=$(PROVIDER) \
	    -e XBUILD=win \
	    -e STAGE=2 \
	    -v `python3 -c 'import os; print(os.path.abspath(".."))'`:/bitmask-vpn.host \
	    --cpus="4" \
	    -it --rm \
	    $(REGISTRY)/$(IMAGE):latest  \
	    /builder.sh

sign_win_installer_in_host:
	$(eval INSTALLER := $(shell ls -tr ../deploy/$(PRODUCT)*.exe | tail -n 1))
	$(eval INSTALLER_SIGNED := $(shell echo $(INSTALLER) | sed 's/\.exe/-signed.exe/'))
	@$(SIGNCODE) sign \
	    -certs ~/$(SECRETS)/win.crt \
	    -key ~/$(SECRETS)/key.pem \
	    -pass `gpg --decrypt ~/$(SECRETS)/../windoze.gpg` \
	    -n "$(PRODUCT) Installer" -i "https://leap.se/" \
	    -in $(INSTALLER) \
	    -out ../deploy/$(INSTALLER_SIGNED)
	@echo "[+] signed installer in:" $(INSTALLER_SIGNED)

shell:
	docker run -v `python3 -c 'import os; print(os.path.abspath(".."))'`:/bitmask-vpn.host -it --rm $(REGISTRY)/$(IMAGE):latest  /bin/bash