-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
118 lines (88 loc) · 5.31 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
# Определение переменных
PROJECT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
MANAGE_DIR := $(PROJECT_DIR)/adaptive_hockey_federation/manage.py
DJANGO_DIR := $(PROJECT_DIR)/adaptive_hockey_federation
POETRY_RUN := poetry run python
DJANGO_RUN := $(POETRY_RUN) $(MANAGE_DIR)
DEV_DOCK_FILE := $(PROJECT_DIR)/infra/dev/docker-compose.dev.yaml
SHELL_GREEN = \033[32m
SHELL_YELLOW = \033[33m
SHELL_NC := \e[0m
# Команда выполняемая по умолчанию.
.DEFAULT_GOAL := help
# Вызов документации.
help:
@echo "$(SHELL_YELLOW)Список полезных функций:$(SHELL_NC)"
@echo " init-app - $(SHELL_GREEN)Команда для автоустановки статики, миграций и регистрации супер-юзера.$(SHELL_NC)"
@echo " makemigrations - $(SHELL_GREEN)Команда для создания новых миграций и пременений их к базе данных.$(SHELL_NC)"
@echo " collectstatic - $(SHELL_GREEN)Команда для сбора статики.$(SHELL_NC)"
@echo " migrate - $(SHELL_GREEN)Команда для применения к базе данных готовых миграций.$(SHELL_NC)"
@echo " createsuperuser - $(SHELL_GREEN)Команда для создания супер-юзера.$(SHELL_NC)"
@echo " start-db - $(SHELL_GREEN)Команда для запуска локального контейнера postgres.$(SHELL_NC)"
@echo " stop-db - $(SHELL_GREEN)Команда для остановки локального контейнера postgres.$(SHELL_NC)"
@echo " clear-db - $(SHELL_GREEN)Команда для очистки volume локального контейнера postgres.$(SHELL_NC)"
@echo " run - $(SHELL_GREEN)Команда для локального запуска проекта.$(SHELL_NC)"
@echo " fill-db - $(SHELL_GREEN)Команда для заполнения базы данных реальными данными из json фикстур.$(SHELL_NC)"
@echo " fill-test-db - $(SHELL_GREEN)Команда для заполнения базы данных тестовыми данными при помощи фабрик генерации данных.$(SHELL_NC)"
@echo " pytest - $(SHELL_GREEN)Команда для прогона юнит тестов pytest.$(SHELL_NC)"
@echo " shell - $(SHELL_GREEN)Команда для запуска Django-shell_plus.$(SHELL_NC)"
@echo " help - $(SHELL_GREEN)Команда вызова справки.$(SHELL_NC)"
@echo "$(SHELL_YELLOW)Для запуска исполнения команд используйте данные ключи совместно с командой 'make', например 'make init-app'."
@echo "При запуске команды 'make' без какого либо ключа, происходит вызов справки.$(SHELL_NC)"
# Подготовка проекта к локальному запуску
init-app: collectstatic migrate createsuperuser
# Сбор статических файлов проекта.
collectstatic:
cd $(PROJECT_DIR) && $(DJANGO_RUN) collectstatic --no-input
# Создание новых миграций на основе сформированных моделей,
# и пременение их к базе данных.
makemigrations: migrate
cd $(PROJECT_DIR) && $(DJANGO_RUN) makemigrations --no-input
# Применение собранных миграций к базе данных, на основе сформированных моделей.
migrate:
cd $(PROJECT_DIR) && $(DJANGO_RUN) migrate --no-input
# Создание супер-юзера.
createsuperuser:
cd $(PROJECT_DIR) && $(DJANGO_RUN) createsuperuser --no-input
# Запуск локальногоконтейнера Postgres
start-db:
docker-compose -f $(DEV_DOCK_FILE) up -d; \
if [ $$? -ne 0 ]; \
then \
docker compose -f $(DEV_DOCK_FILE) up -d; \
fi
# Остановка контейнера Postgres
stop-db:
docker-compose -f $(DEV_DOCK_FILE) down; \
if [ $$? -ne 0 ]; \
then \
docker compose -f $(DEV_DOCK_FILE) down; \
fi
# Очистка БД Postgres
clear-db:
docker-compose -f $(DEV_DOCK_FILE) down --volumes; \
if [ $$? -ne 0 ]; \
then \
docker compose -f $(DEV_DOCK_FILE) down --volumes; \
fi
# Локальный запуск сервера разработки.
run:
cd $(PROJECT_DIR) && $(DJANGO_RUN) runserver
# Запуск django shell
shell:
cd $(PROJECT_DIR) && $(DJANGO_RUN) shell_plus --plain
# Заполнение базы данных с помощью парсера.
fill-db:
cd $(PROJECT_DIR) && $(DJANGO_RUN) fill-db --fixtures
#Заполнение базы данных фикстурами
fill-test-db:
cd $(PROJECT_DIR) && $(DJANGO_RUN) fill-test-db --users
cd $(PROJECT_DIR) && $(DJANGO_RUN) fill-test-db --diagnosis --amount 8
cd $(PROJECT_DIR) && $(DJANGO_RUN) fill-test-db --staffteam
cd $(PROJECT_DIR) && $(DJANGO_RUN) fill-test-db --discipline --amount 3
cd $(PROJECT_DIR) && $(DJANGO_RUN) fill-test-db --team --amount 20
cd $(PROJECT_DIR) && $(DJANGO_RUN) fill-test-db --player --amount 300
# Прогон тестов с помощью pytest
pytest:
cd $(DJANGO_DIR) && pytest
.PHONY: help