.PHONY: doc test
PROG=scriptform

fake:
	# NOOP

install:
	cp src/scriptform.py /usr/bin/scriptform

uninstall:
	rm /usr/bin/scriptform

release: release_src release_deb release_rpm

doc:
	markdown_py doc/MANUAL.md > doc/MANUAL.html
	markdown_py README.md > README.html

release_src: doc
	@echo "Making release for version $(REL_VERSION)"

	@if [ -z "$(REL_VERSION)" ]; then echo "REL_VERSION required"; exit 1; fi

	# Prepare source
	rm -rf $(PROG)-$(REL_VERSION)
	mkdir $(PROG)-$(REL_VERSION)
	cp src/scriptform.py $(PROG)-$(REL_VERSION)/scriptform
	cp src/daemon.py $(PROG)-$(REL_VERSION)/
	cp src/formconfig.py $(PROG)-$(REL_VERSION)/
	cp src/formdefinition.py $(PROG)-$(REL_VERSION)/
	cp src/formrender.py $(PROG)-$(REL_VERSION)/
	cp src/webapp.py $(PROG)-$(REL_VERSION)/
	cp LICENSE $(PROG)-$(REL_VERSION)/
	cp README.md $(PROG)-$(REL_VERSION)/
	cp contrib/release_Makefile $(PROG)-$(REL_VERSION)/Makefile
	cp doc/MANUAL.html $(PROG)-$(REL_VERSION)/MANUAL.html

	# Bump version numbers
	find $(PROG)-$(REL_VERSION)/ -type f -print0 | xargs -0 sed -i "s/%%VERSION%%/$(REL_VERSION)/g" 

	# Create archives
	zip -r $(PROG)-$(REL_VERSION).zip $(PROG)-$(REL_VERSION)
	tar -vczf $(PROG)-$(REL_VERSION).tar.gz  $(PROG)-$(REL_VERSION)

release_deb: doc
	@if [ -z "$(REL_VERSION)" ]; then echo "REL_VERSION required"; exit 1; fi

	mkdir -p rel_deb/usr/bin
	mkdir -p rel_deb/usr/lib/scriptform
	mkdir -p rel_deb/usr/share/doc/$(PROG)
	mkdir -p rel_deb/usr/share/man/man1

	# Copy the source to the release directory structure.
	cp LICENSE rel_deb/usr/share/doc/$(PROG)
	cp README.md rel_deb/usr/share/doc/$(PROG)
	cp doc/MANUAL.md rel_deb/usr/share/doc/$(PROG)
	cp README.html $(PROG)-$(REL_VERSION)/README.html
	cp doc/MANUAL.html $(PROG)-$(REL_VERSION)/MANUAL.html
	cp src/scriptform.py rel_deb/usr/lib/scriptform/
	cp src/daemon.py rel_deb/usr/lib/scriptform/
	cp src/formconfig.py rel_deb/usr/lib/scriptform/
	cp src/formdefinition.py rel_deb/usr/lib/scriptform/
	cp src/formrender.py rel_deb/usr/lib/scriptform/
	cp src/webapp.py rel_deb/usr/lib/scriptform/
	ln -s /usr/lib/scriptform/scriptform.py rel_deb/usr/bin/scriptform

	cp contrib/scriptform.init.d_debian rel_deb/usr/share/doc/$(PROG)
	cp contrib/scriptform.init.d_redhat rel_deb/usr/share/doc/$(PROG)
	cp -ar contrib/debian/DEBIAN rel_deb/

	# Bump version numbers
	find rel_deb/ -type f -print0 | xargs -0 sed -i "s/%%VERSION%%/$(REL_VERSION)/g" 

	# Create debian pacakge
	fakeroot dpkg-deb --build rel_deb > /dev/null
	mv rel_deb.deb $(PROG)-$(REL_VERSION).deb

	# Cleanup
	rm -rf rel_deb

release_rpm: release_deb
	alien -r scriptform-$(REL_VERSION).deb

clean:
	rm -rf *.tar.gz
	rm -rf *.zip
	rm -rf *.deb
	rm -rf rel_deb
	rm -rf scriptform-*
	rm -rf doc/manual.html
	rm -rf doc/MANUAL.html
	rm -rf examples/megacorp_acc/megacorp.db
	rm -rf examples/megacorp_acc/.coverage
	rm -rf examples/megacorp_acc/htmlcov
	find ./ -name "*.log" -delete
	find ./ -name "*.pyc" -delete
	rm -rf $(PROG)-$(REL_VERSION)


test:
	@echo "\nTESTS\n"
	cd test && python ./test.py
	@echo "\nFLAKE8\n"
	cd src && flake8 *.py || true
	@echo "\nPYLINT\n"
	cd src && pylint --reports=n -dR -d star-args -d no-member *.py || true