-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
175 lines (140 loc) · 4.62 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
MAKEFLAGS += --no-print-directory --silent
################################################################################
# Makefile Variables
################################################################################
SHELL := $(or $(shell echo $$SHELL),/bin/sh)
POETRY_VERSION = 1.8.3
VENV_PATH ?= .venv
POETRY_HOME ?= .venv_poetry
PYTHON = $(shell command -v python3)
POETRY = $(POETRY_HOME)/bin/poetry
################################################################################
# Default
################################################################################
.DEFAULT_GOAL := default
.PHONY: default
default:
@echo "Running default task"
@$(MAKE) build
@$(MAKE) install-galaxy
@$(MAKE) format
################################################################################
# Setup & Install
################################################################################
.PHONY: build
build:
$(POETRY) build;
.PHONY: install-galaxy
install-galaxy:
$(POETRY) install --only-root
.PHONY: install
install:
$(MAKE) install-poetry
$(MAKE) clean
$(MAKE) new-venv
$(MAKE) install-deps
$(MAKE) build
$(MAKE) install-galaxy
$(MAKE) install-hooks
.PHONY: reinstall
reinstall:
$(MAKE) delete-venv
$(MAKE) remove-poetry
$(MAKE) clean
$(MAKE) install
.PHONY: install-poetry
install-poetry:
@if [ -f "$(POETRY)" ]; then \
echo "Poetry already installed in virtual environment"; \
else \
echo "Installing poetry in virtual environment"; \
$(PYTHON) -m venv "$(POETRY_HOME)"; \
$(POETRY_HOME)/bin/pip install --upgrade pip; \
$(POETRY_HOME)/bin/pip install poetry==$(POETRY_VERSION); \
fi
.PHONY: install-deps
-include .env
install-deps:
@echo "Installing dependencies"
@$(POETRY) install --no-root --no-interaction --no-ansi --all-extras -v
################################################################################
# Development - Virtual Environment
################################################################################
.PHONY: new-venv
new-venv:
@echo "Creating virtual environment"
@$(PYTHON) -m venv "$(VENV_PATH)"
.PHONY: delete-venv
delete-venv:
@echo "Deleting virtual environment"
@rm -rf "$(VENV_PATH)"
.PHONY: remove-poetry
remove-poetry:
@echo "Removing poetry from virtual environment"
@rm -rf "$(POETRY_HOME)"
################################################################################
# Development - Utilities
################################################################################
.PHONY: clean
clean:
@echo "Cleaning up"
@rm -rf .pytest_cache .ruff_cache .coverage htmlcov/
@find . -type d -name '__pycache__' -exec rm -rf {} +
@find . -type f -name '*.py[co]' -delete
@find . -type f -name '*~' -delete
################################################################################
# Development - Pre-commit Hooks
################################################################################
.PHONY: install-hooks
install-hooks:
@echo "Installing pre-commit hooks"
@$(POETRY) run pre-commit install
.PHONY: update-hooks
update-hooks:
@echo "Updating pre-commit hooks"
@$(POETRY) run pre-commit autoupdate
################################################################################
# Development - Dependencies
################################################################################
.PHONY: lock
lock:
@echo "Locking dependencies"
@$(POETRY) lock --no-update
.PHONY: lock-update
lock-update:
@echo "Locking and updating dependencies"
@$(POETRY) update
################################################################################
# Linting & Formatting
################################################################################
.PHONY: lint
lint:
@echo "Running ruff check and format check"
# @$(POETRY) run galaxy validate-all
@$(POETRY) run ruff check . --exit-non-zero-on-fix
@$(POETRY) run ruff format . --check
.PHONY: format
format:
@echo "Running ruff format"
@$(POETRY) run ruff format .
@$(POETRY) run ruff check . --fix
.PHONY: autofix-unsafe
autofix-unsafe:
@echo "Running ruff with autofix-unsafe"
@$(POETRY) run galaxy validate-all --unsafe
@$(POETRY) run ruff check . --unsafe-fixes
################################################################################
# Testing
################################################################################
.PHONY: test
test:
$(POETRY) run pytest --ignore=galaxy/cli/cookiecutter -vvv;
################################################################################
# Development - Execution
################################################################################
.PHONY: run
run:
$(POETRY) run galaxy run;
.PHONY: run-debug
run-debug:
$(POETRY) run galaxy run -d;