export DOCKER_NAME=barco-edu-proxy
export DEV_TEAM=nrc
export RELEASE_BRANCHES=^(debian/.*)$$
export DEFAULT_BASEOS_TARGET_DISTRO=nrcdeb11100

# electron-forge needs node >=14.17.5 (but throws errors when using 16.16.0)
NODE_TAG:=14.17.5
NODE_VERSION:=$(NODE_TAG)-linux-x64
NODE_INSTALL_PATH:=${HOME}/node-v$(NODE_VERSION)
SHELL := /bin/bash
USERNAME := $(shell whoami)
PATH_WITH_NODE := $(NODE_INSTALL_PATH)/bin:${PATH}

.PHONY: env clean build install package prepare docker iso ova lintian unittest  lint insert

prepare:
		@echo "MAKE prepare ==========================================="
		# next 2 lines: needed in order for apt to find libgdk-pixbuf-2.0-0 which
		# is in folder http://repomanager.barco.com:8082/pool/main/g/gdk-pixbuf/
		sudo sed -ie 's/devtools1100/nrcdeb11100/g' /etc/apt/sources.list.d/multistrap-baseos.list
		sudo apt update && sudo apt upgrade -yqq
		rm -rf /tmp/electron-packager
		sudo apt-get install -y apt-transport-https
		curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
		echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
		sudo apt update
		sudo apt install -y xvfb yarn cmake unzip libgbm1 libnss3 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf-2.0-0 libgtk-3-0 libpango-1.0-0 libcairo2 libxcomposite1 libxrandr2 libxkbcommon0 libcups2 libudev-dev
		mkdir -p $(NODE_INSTALL_PATH)
		curl -o ./node-v$(NODE_VERSION).tar.gz https://nodejs.org/download/release/v$(NODE_TAG)/node-v$(NODE_VERSION).tar.gz &&	tar -C $(NODE_INSTALL_PATH) --strip-components=1 -xzf ./node-v$(NODE_VERSION).tar.gz &&	rm -rf  node_modules ./node-v$(NODE_VERSION).tar.gz
		PATH=$(PATH_WITH_NODE) ELECTRON_MIRROR=${ELECTRON_MIRROR} NPM_CONFIG_REGISTRY=${NPM_CONFIG_REGISTRY} NPM_CONFIG__AUTH=${NPM_CONFIG__AUTH} NPM_CONFIG_ALWAYS_AUTH=true electron_use_remote_checksums=1 npm run barco:install
		PATH=$(PATH_WITH_NODE) make -j8 lint
		# PATH=$(PATH_WITH_NODE) ldd /home/user/package/barco-edu-proxy-3.13.4~barco10+3/node_modules/electron/dist/electron
		PATH=$(PATH_WITH_NODE) make -j8 unittest
		PATH=$(PATH_WITH_NODE) make -j8 tsc
		# Download the zip locally and let electron-forge take if from there (using "electronZipDir"
		# configuration option) because else authentication errors while downloading from artifactory
		curl -H "X-JFrog-Art-Api:${TF_VAR_ARTIFACTORY_APIKEY}" https://bin.barco.com:443/artifactory/www-cache/edu-electron/v21.3.0/electron-v21.3.0-linux-x64.zip > /tmp/electron-v21.3.0-linux-x64.zip
		PATH=$(PATH_WITH_NODE) NODE_ENV=production DEBUG=electron-forge:*,electron-packager:* node_modules/.bin/electron-forge package
		sudo chown root:root out/edu_proxy-linux-x64/chrome-sandbox
		sudo chmod 4755 out/edu_proxy-linux-x64/chrome-sandbox
		tar czf package.tar.gz out
		rm -rf ./node-v$(NODE_VERSION).tar.gz .cache/ debian/.sonarlint/ .config/  node_modules/ .npm/  out/

unittest:
		Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
		./node_modules/.bin/electron-rebuild
		JENKINS=korjnk01 DISPLAY=':99.0' npm run test
	#	find /home/user/.npm/_logs/ -iname *.log -print -exec cat {} \;
	#	tail -f /dev/null >/dev/null

lint:
		npm run lint

tsc:
		npm run tsc

env:
		@echo "MAKE env ==========================================="
		build-scripts/show-env.sh

clean:
		@echo "MAKE clean ==========================================="

build:
		@echo "MAKE build ==========================================="
		tar   -xzf package.tar.gz


package:
	@echo "MAKE package ==================================================="
	build-scripts/debian-package/build-debian-package.sh

publish:
	@echo "MAKE publish ==========================================="
	build-scripts/debian-package/upload-debian-package.sh

iso:
	@echo "MAKE iso ==========================================="
	build-scripts/debian-package/build-iso-image.sh

docker:
	@echo "MAKE docker ==========================================="
	build-scripts/debian-package/build-docker-image.sh

lintian:
	build-scripts/debian-package/lintian-check-debian-package.sh

ova:
	@echo "MAKE ova ==========================================="
	build-scripts/debian-package/build-ova-image.sh

insert:
	@echo "MAKE insert ==========================================="
	build-scripts/debian-package/insert_package_in_distro.sh

run:
	@echo "MAKE Run ==========================================="
	build-scripts/debian-package/run-docker-image.sh
