# Makefile for Entangle.

SHELL = /bin/bash

T = test
PYTHON = python
TANGO_HOST ?= localhost:10000
JENKINS_HOST ?= jenkins.admin.frm2.tum.de

test:
	TANGO_HOST=$(TANGO_HOST) $(PYTHON) -m pytest -v $(O) $(T)

test-coverage:
	TANGO_HOST=$(TANGO_HOST) $(PYTHON) -m pytest -v --cov --cov-report=html --cov-report=term $(O) $(T)

lint:
	pylint -r n --rcfile=pylintrc entangle test

covcheck:
	tools/covcheck.py

baseclass-code:
	for f in defs/*.xmi; do \
		tools/classgen.py $$f entangle/base/`basename $$f .xmi | tr '[:upper:]' '[:lower:]'`.py; \
	done

baseclass-docs-gen:
	tools/docgen.py -o defs/rst -O doc/base defs

baseclass-docs: baseclass-docs-gen
	(cd defs/rst; make html)

fixup-xmi:
	for f in defs/*.xmi ; do \
		sed -i -e 's%sourcePath="[^"]\+"%sourcePath="defs"%' $$f; \
		sed -i -e 's/``/\&quot;/g' $$f; \
		sed -i -e 's%makefileHome="[^"]\+"%makefileHome="$$(TANGO_HOME)"%' $$f; \
	done

clean:
	rm -rf defs/rst/_build
	rm -rf doc/_build
	rm -rf test/log
	rm -rf .coverage
	find . -name '*.pyc' -exec rm -f {} \;

jenkinslint:
	PYFILESCHANGED=$$(git diff --name-status `git merge-base HEAD HEAD^` | sed -e '/^D/d' | sed -e 's/.\t//' | grep "\.py\$$"); \
	if [[ -n "$$PYFILESCHANGED" ]] ; then \
		PYTHONPATH=.:${PYTHONPATH} pylint --rcfile=./pylintrc $$PYFILESCHANGED; \
	else echo 'no Python files changed'; fi

doc:
	cd doc && $(MAKE) html

.PHONY: test test-coverage lint baseclass-code baseclass-docs-gen baseclass-docs fixup-xmi clean jenkinslint doc

release-patch:
	MODE="patch" $(MAKE) release

release-minor:
	MODE="minor" $(MAKE) release

release:
	ssh $(JENKINS_HOST) -p 29417 build -v -s -p GERRIT_PROJECT=$(shell git config --get remote.origin.url | rev | cut -d '/' -f -3 | rev) -p ARCH=all -p MODE=$(MODE) ReleasePipeline

.PHONY: release release-patch release-minor
