# *_DIR variables refer to single level subdirectories of the top level topplot
# source directory. This simplifies the sed usage throughout this file.
BUILD_DIR:=build
DIST_DIR:=dist
ENV_DIR:=envdir
LOG_DIR:=logs
LOG_FILES:=$(wildcard $(LOG_DIR)/top.*.log)
PNG_FILES:=$(subst .,_,$(LOG_FILES))
PNG_FILES:=$(subst /,_,$(PNG_FILES))
PNG_FILES:=$(shell echo $(PNG_FILES) | sed -n 's/\([^ ]\+\) \?/$(DIST_DIR)\/\1_overview.png /gp')
TEST_DIR:=tests.d
TEST_EXE:=$(ENV_DIR)/bin/topplot
TOPPLOT_VERSION:=$(shell sed -n 's/^\s*version="\(.*\)",$$/\1/p' setup.py)
TOPPLOT_WHEEL:=$(DIST_DIR)/topplot-$(TOPPLOT_VERSION)-py3-none-any.whl

#-------------------------------------------------------------------------------

.PHONY: build clean test test-upload upload

.ONESHELL: # Allow multiline recipes

#-------------------------------------------------------------------------------

clean:
	rm -rf $(BUILD_DIR) $(DIST_DIR) $(ENV_DIR) $(TEST_DIR) *.egg-info

#-------------------------------------------------------------------------------

$(TOPPLOT_WHEEL): setup.py topplot/*.py topplot/*.png
	python3 -V
	python3 setup.py sdist bdist_wheel

build: $(TOPPLOT_WHEEL)

#-------------------------------------------------------------------------------

$(TEST_EXE): $(TOPPLOT_WHEEL)
	[ -d $(ENV_DIR) ] && rm -rf $(ENV_DIR)
	python3 -m venv $(ENV_DIR)
	. $(ENV_DIR)/bin/activate
	pip3 install $(TOPPLOT_WHEEL)

install: $(TEST_EXE)

#-------------------------------------------------------------------------------

$(PNG_FILES): $(TEST_EXE) $(LOG_FILES)
	[ -d $(TEST_DIR) ] || mkdir -p $(TEST_DIR)
	. $(ENV_DIR)/bin/activate
	$(TEST_EXE) -f $(LOG_DIR)/$(shell echo $(@F) | sed -e 's/'$(LOG_DIR)'_top_\(.*\)_log_overview\.png/top.\1.log/') -g0pcCQ --outputdir $(TEST_DIR)

test: $(PNG_FILES)

#-------------------------------------------------------------------------------

test-upload: $(TOPPLOT_WHEEL)
	echo ebardie | twine upload --verbose --repository-url https://test.pypi.org/legacy/ $(DIST_DIR)/*
	sleep 3

upload: clean $(TOPPLOT_WHEEL) $(PNG_FILES)
	echo ebardie | twine upload --verbose  $(DIST_DIR)/*

force-upload: $(TOPPLOT_WHEEL)
	echo ebardie | twine upload --verbose  $(DIST_DIR)/*

#-------------------------------------------------------------------------------
