# =====CONFIG=====
PYTHON  := python3
# This can't contain spaces (I think)
VENV    := .venv
# Minimum % coverage for tests to succeed
MIN_COV := 50
SRC     := setup.py config_skeleton tests


# =====GENERAL=====
## By default, create the venv
all: venv
.PHONY: all
	
## Remove any temporary files
clean:
	@ rm -rf '$(VENV)'
.PHONY: clean


# =====BACKEND=====
## VENV
### Create the venv
$(VENV)/bin/activate: setup.cfg
	@ '$(PYTHON)' -m venv '$(VENV)'
	@ '$(VENV)'/bin/pip install -e .[develop]


### Convenient alias for the venv
venv: $(VENV)/bin/activate
.PHONY: venv


## Formatting & linting
### Format the codebase using black
format: venv
	@ '$(VENV)'/bin/isort $(SRC)
	@ '$(VENV)'/bin/black $(SRC)
.PHONY: format

### Lint using black & flake8
lint: venv
	@ '$(VENV)'/bin/flake8 $(SRC)
	@ '$(VENV)'/bin/black --check $(SRC)
	@ '$(VENV)'/bin/isort --check $(SRC)
.PHONY: lint


## Testing
test: venv
	@ '$(VENV)'/bin/pytest --cov=config_skeleton --cov-fail-under='$(MIN_COV)' tests/
.PHONY: test