Files
mypointvpn/Makefile
T
2026-09-24 13:19:45 +04:00

71 lines
2.3 KiB
Makefile

VENV := .venv
PYTHON := $(VENV)/bin/python
PIP := $(VENV)/bin/pip
WHEELS_DIR := wheels
REQUIREMENTS := requirements.txt
MAKECMDGOALS_TARGETS := install freeze wheels sync sync-offline clean help
PKG := $(filter-out $(MAKECMDGOALS_TARGETS),$(MAKECMDGOALS))
.PHONY: install freeze wheels sync sync-offline clean help venv dj_makemigrations dj_migrate dj_superuser dj_run dj_test
help:
@echo "make install <pkg> [<pkg> ...] - установить пакет(ы) в $(VENV), обновить $(REQUIREMENTS), собрать wheel в $(WHEELS_DIR)/"
@echo "make sync - установить все пакеты из $(REQUIREMENTS) (из индекса)"
@echo "make sync-offline - установить все пакеты из $(REQUIREMENTS) только из $(WHEELS_DIR)/, без обращения к индексу"
@echo "make freeze - перезаписать $(REQUIREMENTS) текущим состоянием окружения"
@echo "make wheels - собрать wheel для всех пакетов из $(REQUIREMENTS)"
@echo "make clean - удалить $(WHEELS_DIR)/"
venv:
@test -d $(VENV) || python3 -m venv $(VENV)
install: venv
ifeq ($(strip $(PKG)),)
$(error Укажите пакет: make install <package>, например make install redis)
endif
echo $(PKG)
$(PIP) install --upgrade $(PKG)
$(PIP) freeze > $(REQUIREMENTS)
@mkdir -p $(WHEELS_DIR)
$(PIP) wheel $(PKG) -w $(WHEELS_DIR)
@echo "Готово: $(PKG) установлен, $(REQUIREMENTS) обновлён, wheel-пакеты в $(WHEELS_DIR)/"
sync: venv
$(PIP) install -r $(REQUIREMENTS)
sync-offline: venv
$(PIP) install --no-index --find-links=$(WHEELS_DIR) -r $(REQUIREMENTS)
freeze: venv
$(PIP) freeze > $(REQUIREMENTS)
wheels: venv
@mkdir -p $(WHEELS_DIR)
$(PIP) wheel -r $(REQUIREMENTS) -w $(WHEELS_DIR)
clean:
rm -rf $(WHEELS_DIR)
# позволяет передавать имя пакета как аргумент: make install redis
%:
@:
dj_makemigrations:
cd src/ && ./manage.py makemigrations
dj_migrate:
cd src/ && ./manage.py migrate
dj_superuser:
cd src/ && ./manage.py createsuperuser
dj_run:
cd src/ && ./manage.py runserver
dj_test:
cd src/ && ./manage.py test
dj_startapp:
cd src/ && ./manage.py startapp $(app)