-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
65 lines (56 loc) · 1.9 KB
/
Makefile
File metadata and controls
65 lines (56 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Include .env file if it exists
ifneq (,$(wildcard ./.env))
include .env
export
endif
ENV_TYPE ?= venv
PYTHON_VERSION ?= 3.10
VENV_DIR := .venv
CONDA_ENV ?= onemod
.PHONY: list-vars check-python setup clean mypy pre-commit
list-vars: ## List variables
@echo "ENV_TYPE = $(ENV_TYPE)"
@echo "PYTHON_VERSION = $(PYTHON_VERSION)"
@echo "VENV_DIR = $(VENV_DIR)"
@echo "CONDA_ENV = $(CONDA_ENV)"
check-python: ## Check if the specified Python version is installed (venv only)
@if [ "$(ENV_TYPE)" = "venv" ]; then \
if ! command -v python$(PYTHON_VERSION) >/dev/null 2>&1; then \
echo "Error: Python $(PYTHON_VERSION) is not installed."; \
exit 1; \
fi; \
fi
setup: check-python ## Set up the development environment (venv or conda)
ifeq ($(ENV_TYPE),venv)
python$(PYTHON_VERSION) -m venv $(VENV_DIR)
$(VENV_DIR)/bin/pip install -U pip
$(VENV_DIR)/bin/pip install -e ".[dev]"
$(VENV_DIR)/bin/pre-commit install
else ifeq ($(ENV_TYPE),conda)
conda create -n $(CONDA_ENV) python=$(PYTHON_VERSION) -y
conda run -n $(CONDA_ENV) pip install -U pip
conda run -n $(CONDA_ENV) pip install -e ".[dev]"
conda run -n $(CONDA_ENV) pre-commit install
else
$(error ENV_TYPE must be 'venv' or 'conda')
endif
mypy: ## Run mypy
ifeq ($(ENV_TYPE),venv)
$(VENV_DIR)/bin/mypy src/ tests/
else ifeq ($(ENV_TYPE),conda)
conda run -n $(CONDA_ENV) mypy src/ tests/
endif
pre-commit: ## Run pre-commit hooks
ifeq ($(ENV_TYPE),venv)
$(VENV_DIR)/bin/pre-commit run --all-files
else ifeq ($(ENV_TYPE),conda)
conda run -n $(CONDA_ENV) pre-commit run --all-files
endif
clean: ## Remove virtual environment or conda environment
ifeq ($(ENV_TYPE),venv)
rm -rf $(VENV_DIR)
else ifeq ($(ENV_TYPE),conda)
conda remove -n $(CONDA_ENV) --all -y
endif
help: ## Show this help message
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'