.PHONY: clean_env init_env clean_virtualenv install_packages clean install run all schema_seminar.pdf schema_all.pdf
PYTHON=python2.7
VE_VER=12.0.7
LOCAL_PYTHON=bin/python

all: install

clean: clean_env

veryclean: clean clean_virtualenv

install: virtualenv bin/python install_packages


# phony, but depends on file
make_env: ${LOCAL_PYTHON}

# phony, but fast repeated execution
install_packages: make_env
	bin/pip install -r requirements.txt

# phony
clean_env:
	rm -rf bin/ include/ lib/ local/ share/
	rm -f pip-selfcheck.json
	rm -f schema_seminar.pdf schema_all.pdf

# binary name representing set-up env
${LOCAL_PYTHON}: virtualenv
	${PYTHON} virtualenv/virtualenv.py .



# directory name
virtualenv:
	curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-${VE_VER}.tar.gz 
	tar xvfz virtualenv-${VE_VER}.tar.gz
	mv virtualenv-${VE_VER} virtualenv
	rm virtualenv-${VE_VER}.tar.gz

# phony
clean_virtualenv:
	rm -rf virtualenv/

run:
	./manage.py runserver_plus

test:
	./manage.py test -v2 seminar mamweb

# DB schemata

schema: schema_seminar.pdf schema_all.pdf

schema_seminar.pdf:
	./manage.py graph_models seminar | dot -Tpdf > schema_seminar.pdf

schema_all.pdf:
	./manage.py graph_models -a -g | dot -Tpdf > schema_all.pdf

# remote commands

TEST_USER=test-mam
TEST_SERVER=atrey.karlin.mff.cuni.cz
TEST_DIR=/home/test-mam/mamweb-test/

PROD_USER=test-mam
PROD_SERVER=atrey.karlin.mff.cuni.cz
PROD_DIR=/home/test-mam/mamweb-prod/

HEAD=`git log --color=never |head -1|sed 's/.*commit //'`

push_test:
	@echo "Checking out commited HEAD (${HEAD}) state at ${TEST_SSH} ..."
	git tag deploy-test-`date +%Y-%m-%d-%H-%M`-${USER}
	git push --all
	ssh ${TEST_USER}@${TEST_SERVER} -n -x "\
		cd ${TEST_DIR} && \
		git fetch --all && \
		git checkout ${HEAD} -f && \
		git clean -f && \
		cp mamweb/settings_test.py mamweb/settings.py && \
		make install && \
		./manage.py collectstatic --noinput && \
		./manage.py migrate --noinput && \
		(chown -Rf :mam . || true ) && \
		(chmod -Rf g+w . || true ) && \
	    	echo 'Reloading apache ... (You may have to start it manually on error!)' && \
		~/etc/apache2/apache2ctl -k restart && \
		echo Done."
	@echo "Test pushed to ${TEST_SERVER}:${TEST_DIR} successfully."
	
push_prod:
	@echo "Checking out commited HEAD (${HEAD}) state at ${PROD_SSH} ..."
	git tag deploy-prod-`date +%Y-%m-%d-%H-%M`-${USER}
	git push --all
	ssh ${PROD_USER}@${PROD_SERVER} -n -x "\
	    	echo 'Stopping apache ... (You may have to start it manually on error!)' && \
		~/etc/apache2/apache2ctl -k stop && \
		cd ${PROD_DIR} && \
		./backup_prod_db.sh && \
		git fetch --all && \
		git checkout ${HEAD} -f && \
		git clean -f && \
		cp mamweb/settings_prod.py mamweb/settings.py && \
		make install && \
		./manage.py collectstatic --noinput && \
		./manage.py migrate --noinput && \
		(chown -Rf :mam . || true ) && \
		(chmod -Rf g+w . || true ) && \
	    	echo 'Starting apache ... (You may have to start it manually on error!)' && \
		~/etc/apache2/apache2ctl -k start && \
		echo Done."
	@echo "Deployed to ${PROD_SERVER}:${PROD_DIR} successfully."