75 lines
2.3 KiB
Makefile
75 lines
2.3 KiB
Makefile
VENV := .venv
|
|
PYTHON := $(VENV)/bin/python
|
|
PIP := $(VENV)/bin/pip
|
|
WHEELS_DIR := wheels
|
|
REQUIREMENTS := requirements.txt
|
|
MANAGE := cd src/ && ../$(PYTHON) manage.py
|
|
|
|
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 dj_startapp tg_run
|
|
|
|
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:
|
|
$(MANAGE) makemigrations
|
|
|
|
dj_migrate:
|
|
$(MANAGE) migrate
|
|
|
|
dj_superuser:
|
|
$(MANAGE) createsuperuser
|
|
|
|
dj_run:
|
|
$(MANAGE) runserver
|
|
|
|
dj_test:
|
|
$(MANAGE) test
|
|
|
|
dj_startapp:
|
|
$(MANAGE) startapp $(app)
|
|
|
|
tg_run:
|
|
$(MANAGE) telegram_run
|