-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
56 lines (45 loc) · 1.67 KB
/
Makefile
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
SHELL=/bin/bash
# Set MAMBA_EXE to either the environment variable MAMBA_EXE or the path to the mamba executable
MAMBA_EXE := $(or $(MAMBA_EXE),$(shell which mamba))
ifeq ($(MAMBA_EXE),)
CONDA_PATH := $(HOME)/miniconda3
MAMBA_EXE := $(CONDA_PATH)/bin/conda
else
CONDA_PATH := $(shell dirname $(dir $(MAMBA_EXE)))
endif
CONDA_ENV_PATH := ./env
CONDA_ACTIVATE := source $(CONDA_PATH)/bin/activate $(CONDA_ENV_PATH)
CONDA_DEACTIVATE := source $(CONDA_PATH)/bin/deactivate $(CONDA_ENV_PATH)
PYTHONPATH := PYTHONPATH=./:$$PYTHONPATH
# Declare phony targets
all: build check clean clean-env test pre-commit
.PHONY: all
# Specify dependencies
build: $(CONDA_ENV_PATH)/bin/activate
# Create the Conda environment if it doesn't exist
$(CONDA_ENV_PATH)/bin/activate: environment.yml
@if [ -d "$(CONDA_ENV_PATH)" ]; then \
echo "Updating Conda environment"; \
$(MAMBA_EXE) env update --quiet --prefix $(CONDA_ENV_PATH) --file environment.yml; \
else \
echo "Creating Conda environment"; \
$(MAMBA_EXE) env create --prefix $(CONDA_ENV_PATH) --file environment.yml; \
fi
# Remove the Conda environment
clean-env:
@if [ -d "$(CONDA_ENV_PATH)" ]; then \
echo "Deactivating $(CONDA_ENV_PATH) environment"; \
$(CONDA_ACTIVATE) && conda deactivate; \
echo "Removing $(CONDA_ENV_PATH) environment"; \
$(MAMBA_EXE) env remove --prefix $(CONDA_ENV_PATH); \
else \
echo "$(CONDA_ENV_PATH) environment not found"; \
fi
test: $(if $(CI),,$(MAKE) build)
$(CONDA_ACTIVATE) && $(PYTHONPATH) pytest tests -v
pre-commit: $(if $(CI),,$(MAKE) build)
$(CONDA_ACTIVATE) && $(PYTHONPATH) pre-commit run --all-files
check: test pre-commit
# Clean up build artifacts
clean:
rm -rf build/ dist/ *.egg-info/