all: website favicon test

UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
	SED=sed -r
	NEWLINE=$\n
endif
ifeq ($(UNAME_S),Darwin)
	SED=sed -E
	NEWLINE=$$'\n'
endif

favicon:
	node gh-badge.js '' '' '#bada55' .png > favicon.png

website:
	cat try.html | $(SED) "s,(<img src=')(/[^'\?]+)',\1https://img.shields.io\2?maxAge=2592000'," \
		| $(SED) "s,(<img src=')(/[^'\?]+\?[^']+)',\1https://img.shields.io\2\&maxAge=2592000'," \
		| $(SED) "s,<span id='imgUrlPrefix'>,&https://img.shields.io," \
		| $(SED) "s,var origin = '';,var origin = 'https://img.shields.io';," \
		| $(SED) "s,<style>,<!-- WARNING: THIS FILE WAS GENERATED FROM try.html -->\\"$(NEWLINE)"<style>," > index.html

deploy: deploy-s0 deploy-s1 deploy-gh-pages

deploy-s0:
	git add -f Verdana.ttf
	git add -f secret.json
	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
	git add -f secret.json
	git commit -m'MUST NOT BE ON GITHUB'
	git push -f s1 HEAD:master
	git reset HEAD~1
	git checkout master

deploy-gh-pages:
	(git checkout -B gh-pages && \
	git merge master && \
	git push -f origin gh-pages:gh-pages) || git checkout master
	git checkout master

deploy-heroku:
	git add -f Verdana.ttf
	git add -f secret.json
	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

setup:
	curl http://download.redis.io/releases/redis-2.8.8.tar.gz >redis.tar.gz \
	&& tar xf redis.tar.gz \
	&& rm redis.tar.gz \
	&& mv redis-2.8.8 redis \
	&& cd redis \
	&& make

redis:
	./redis/src/redis-server

test:
	npm test

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