NAME ?= mpd_dynamic
SRC = $(NAME).py

PYTHON ?= python3
VENV ?= venv
ACTIVATE = $(VENV)/bin/activate


.PHONY: run
run: deps
    . $(ACTIVATE) ; python3 -m $(NAME)


.PHONY: install
install:
    pip install -U --ignore-installed .
    pip show $(NAME)

.PHONY: uninstall
uninstall:
    pip uninstall --yes $(NAME)


$(ACTIVATE):
    $(PYTHON) -m venv $(VENV)
    . $(@) ; pip install -U pip setuptools wheel
    @touch $(@)

$(VENV)/.requirements.txt: requirements.txt $(ACTIVATE)
    . $(ACTIVATE) ; pip install -U -r $(<)
    @touch $(@)

$(VENV)/.requirements-dev.txt: $(ACTIVATE) Makefile
    . $(ACTIVATE) ; pip install -U mypy flake8 bandit types-requests
    @touch $(@)

.PHONY: deps
deps: $(VENV)/.requirements.txt

.PHONY: dev-deps
dev-deps: deps $(VENV)/.requirements-dev.txt


.PHONY: check
check: dev-deps
    . $(ACTIVATE) ; mypy --ignore-missing-imports -- $(SRC)
    . $(ACTIVATE) ; flake8 --max-line-length 120 -- $(SRC)
    . $(ACTIVATE) ; bandit -r --quiet -- $(SRC)


.PHONY: clean
clean:
    rm -rf $(VENV) .mypy_cache
    find . -ignore_readdir_race -type d -name '__pycache__' -exec rm -rf {} \; >/dev/null 2>&1 || true