SHELL:=/bin/bash

DEPLOY_TEMP=${TMPDIR}shields-deploy

all: website favicon test

favicon:
	# This isn't working right now. See https://github.com/badges/shields/issues/1788
	node lib/badge-cli.js '' '' '#bada55' .png > favicon.png

website:
	LONG_CACHE=false npm run build

# `website` is needed for the server deploys.
deploy: website deploy-s0 deploy-s1 deploy-s2 deploy-gh-pages deploy-gh-pages-clean

deploy-s0:
	# Ship a copy of the front end to each server for debugging.
	# https://github.com/badges/shields/issues/1220
	git add -f Verdana.ttf private/secret.json build/
	git commit -m'MUST NOT BE ON GITHUB'
	git push -f s0 HEAD:master
	git reset HEAD~1
	git checkout master

deploy-s1:
	git add -f Verdana.ttf private/secret.json build/
	git commit -m'MUST NOT BE ON GITHUB'
	git push -f s1 HEAD:master
	git reset HEAD~1
	git checkout master

deploy-s2:
	git add -f Verdana.ttf private/secret.json build/
	git commit -m'MUST NOT BE ON GITHUB'
	git push -f s2 HEAD:master
	git reset HEAD~1
	git checkout master

deploy-gh-pages:
	rm -rf ${DEPLOY_TEMP}
	git worktree prune
	LONG_CACHE=true \
		BASE_URL=https://img.shields.io \
		NEXT_ASSET_PREFIX=https://shields.io \
		npm run build
	git worktree add -B gh-pages ${DEPLOY_TEMP}
	git -C ${DEPLOY_TEMP} ls-files | xargs git -C ${DEPLOY_TEMP} rm
	git -C ${DEPLOY_TEMP} commit -m '[DEPLOY] Completely clean the index'
	cp -r build/* ${DEPLOY_TEMP}
	cp favicon.png ${DEPLOY_TEMP}
	echo shields.io > ${DEPLOY_TEMP}/CNAME
	touch ${DEPLOY_TEMP}/.nojekyll
	git -C ${DEPLOY_TEMP} add .
	git -C ${DEPLOY_TEMP} commit -m '[DEPLOY] Add built site'
	git push -f origin gh-pages

deploy-gh-pages-clean:
	rm -rf $DEPLOY_TEMP
	git worktree prune

deploy-heroku:
	git add -f Verdana.ttf private/secret.json build/
	git commit -m'MUST NOT BE ON GITHUB'
	git push -f heroku HEAD:master
	git reset HEAD~1
	(git checkout -B gh-pages && \
	git merge master && \
	git push -f origin gh-pages:gh-pages) || git checkout master
	git checkout master

test:
	npm test

.PHONY: all favicon website deploy deploy-s0 deploy-s1 deploy-s2 deploy-gh-pages deploy-heroku setup redis test
