Enhance and clean Makefile

- Use .ONESHELL to use the same shell for a single goal. This allows to stay in a venv without dirty (cmd; \ cmd; \) hacks.
- Replace /usr/bin/env bash with bash, as it doesn't work with .ONESHELL.
- Use make targets dependencies to check it was reached.
- Simplify help generator and make help comment obvious.
This commit is contained in:
jo 2021-08-26 19:44:26 +02:00
parent 4185f44164
commit c062523c62
1 changed files with 21 additions and 20 deletions

View File

@ -1,30 +1,31 @@
VENV_DIR := .venv VENV_DIR := .venv
SHELL := /usr/bin/env bash SHELL := bash
.DEFAULT_GOAL := help .DEFAULT_GOAL := help
.ONESHELL:
help: help:
@grep -E '^[a-zA-Z1-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) \ @grep '^#?.*' $(MAKEFILE_LIST) \
| awk 'BEGIN { FS = ":.*?## " }; { printf "\033[36m%-30s\033[0m %s\n", $$1, $$2 }' | awk -F ':' '{ $$1 = substr($$1, 4); printf "\033[36m%-30s\033[0m %s\n", $$1, $$2 }'
install: ## Install all necessary tools $(VENV_DIR):
$(MAKE) \ $(shell command -v python3) -m venv $(VENV_DIR)
venv \
install-pip-packages
@echo -e "\n--> You should now activate the python3 venv with:"
@echo -e "source $(VENV_DIR)/bin/activate"
venv: ## Create python3 venv if it does not exists #? install: Install all necessary tools
[[ -d $(VENV_DIR) ]] || $(shell command -v python3) -m venv $(VENV_DIR) install: install-pip-packages
@$(info --> You should now activate the python3 venv with:)
@$(info source $(VENV_DIR)/bin/activate)
install-pip-packages: ## Install python3 requirements #? install-pip-packages: Install python3 requirements
$(info --> Install requirements via `pip3`) install-pip-packages: $(VENV_DIR)
@( \ @$(info --> Install requirements via `pip3`)
source $(VENV_DIR)/bin/activate; \ @source $(VENV_DIR)/bin/activate
pip3 install -r requirements.txt; \ @pip3 install -r requirements.txt
)
upgrade-pip-packages: ## Upgrade python3 requirements #? upgrade-pip-packages: Upgrade python3 requirements
$(shell command -v pip3) -U -r requirements.txt upgrade-pip-packages: $(VENV_DIR)
@source $(VENV_DIR)/bin/activate
@pip3 install --upgrade -r requirements.txt
clean: ## Clean venv #? clean: Clean venv
clean:
[[ ! -d $(VENV_DIR) ]] || rm -rf $(VENV_DIR) [[ ! -d $(VENV_DIR) ]] || rm -rf $(VENV_DIR)