-
Notifications
You must be signed in to change notification settings - Fork 5
/
Makefile
170 lines (136 loc) · 8.05 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
BLACK ?= \033[0;30m
RED ?= \033[0;31m
GREEN ?= \033[0;32m
YELLOW ?= \033[0;33m
BLUE ?= \033[0;34m
PURPLE ?= \033[0;35m
CYAN ?= \033[0;36m
GRAY ?= \033[0;37m
WHITE ?= \033[1;37m
COFF ?= \033[0m
.PHONY: all help shell shell-dev build build-dev runserver runserver-dev collectstatic collectstatic-dev makemigrations makemigrations-dev migrate migrate-dev load-initial-data load-many-posts superuser superuser-dev shutdown shutdown-dev shutdown-volumes shutdown-volumes-dev logs logs-dev logs-interactive logs-interactive-dev coverage-django lint lint-fix test-project test-website test-users docker
all: help
help:
@echo -e "\n$(WHITE)Available commands:$(COFF)"
@echo -e "$(CYAN)make shell$(COFF) - Starts a Linux shell (bash) in the web production container"
@echo -e "$(CYAN)make shell-dev$(COFF) - Starts a Linux shell (bash) in the web development container"
@echo -e "$(CYAN)make build$(COFF) - Builds production images"
@echo -e "$(CYAN)make build-dev$(COFF) - Builds development images"
@echo -e "$(CYAN)make runserver$(COFF) - Runs the django production app, available at http://127.0.0.1:8000"
@echo -e "$(CYAN)make runserver-dev$(COFF) - Runs the django development app, available at http://127.0.0.1:8000"
@echo -e "$(CYAN)make collectstatic$(COFF) - Runs the Django's collectstatic command"
@echo -e "$(CYAN)make collectstatic-dev$(COFF) - Runs the Django's collectstatic command in development"
@echo -e "$(CYAN)make makemigrations$(COFF) - Runs django's makemigrations command in the production container"
@echo -e "$(CYAN)make makemigrations-dev$(COFF) - Runs django's makemigrations command in the development container"
@echo -e "$(CYAN)make migrate$(COFF) - Runs django's migrate command in the production container"
@echo -e "$(CYAN)make migrate-dev$(COFF) - Runs django's migrate command in the development container"
@echo -e "$(CYAN)make load-initial-data$(COFF) - Loads initial data from Django fixtures"
@echo -e "$(CYAN)make load-many-posts$(COFF) - Loads many blog posts"
@echo -e "$(CYAN)make superuser$(COFF) - Runs django's createsuperuser command in the production container"
@echo -e "$(CYAN)make superuser-dev$(COFF) - Runs django's createsuperuser command in the development container"
@echo -e "$(RED)make shutdown$(COFF) - Shuts down the running services in production"
@echo -e "$(RED)make shutdown-dev$(COFF) - Shuts down the running services in development"
@echo -e "$(RED)make shutdown-volumes$(COFF) - Shuts down the running services and deletes volumes in production"
@echo -e "$(RED)make shutdown-volumes-dev$(COFF) - Shuts down the running services and deletes volumes in development"
@echo -e "$(CYAN)make logs$(COFF) - Shows server logs"
@echo -e "$(CYAN)make logs-dev$(COFF) - Shows server logs in development"
@echo -e "$(CYAN)make logs-interactive$(COFF) - Shows interactive server logs"
@echo -e "$(CYAN)make logs-interactive-dev$(COFF) - Shows interactive server logs in development"
@echo -e "$(CYAN)make coverage-django$(COFF) - Runs automatic code coverage check for Python"
@echo -e "$(CYAN)make lint$(COFF) - Runs code quality check for Python"
@echo -e "$(CYAN)make lint-fix$(COFF) - Fixes code quality for Python in entire project"
@echo -e "$(CYAN)make test-project$(COFF) - Runs automatic tests on the entire project"
@echo -e "$(CYAN)make test-website$(COFF) - Runs automatic tests on website app"
@echo -e "$(CYAN)make test-users$(COFF) - Runs automatic tests on users app"
shell:
@echo -e "$(CYAN)Starting Django shell prompt:$(COFF)"
@docker-compose -f docker-compose-prod.yml run --rm web python ./manage.py shell
shell-dev:
@echo -e "$(CYAN)Starting Django shell prompt in development:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python ./manage.py shell
build:
@echo -e "$(CYAN)Building website images:$(COFF)"
@docker-compose -f docker-compose-prod.yml build
build-dev:
@echo -e "$(CYAN)Building website images for development:$(COFF)"
@docker-compose -f docker-compose-dev.yml build
runserver:
@echo -e "$(GREEN)Starting Docker container with the app$(COFF)"
@docker-compose -f docker-compose-prod.yml up -d
@echo -e "$(CYAN)App ready and listening at http://127.0.0.1.$(COFF)"
runserver-dev:
@echo -e "$(GREEN)Starting Docker container with the app in development.$(COFF)"
@docker-compose -f docker-compose-dev.yml up -d
@echo -e "$(CYAN)App ready and listening at http://127.0.0.1:8000.$(COFF)"
makemigrations:
@echo -e "$(CYAN)Running django makemigrations:$(COFF)"
@docker-compose -f docker-compose-prod.yml run --rm web python ./manage.py makemigrations $(cmd)
makemigrations-dev:
@echo -e "$(CYAN)Running django makemigrations for development:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python ./manage.py makemigrations $(cmd)
collectstatic:
@echo -e "$(CYAN)Running django collectstatic:$(COFF)"
@docker-compose -f docker-compose-prod.yml run --rm web python ./manage.py collectstatic --no-input $(cmd)
collectstatic-dev:
@echo -e "$(CYAN)Running django collectstatic in develoment:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python ./manage.py collectstatic $(cmd)
migrate:
@echo -e "$(CYAN)Running django migrations:$(COFF)"
@docker-compose -f docker-compose-prod.yml run --rm web python ./manage.py migrate $(cmd)
migrate-dev:
@echo -e "$(CYAN)Running django migrations in development:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python ./manage.py migrate $(cmd)
load-initial-data:
@echo -e "$(CYAN)Populating initial data from Django fixtures:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python ./manage.py loaddata website/fixtures/initial.json
load-many-posts:
@echo -e "$(CYAN)Loading lots of blog posts:$(COFF)"
@docker-compose run --rm web python ./manage.py loadmanyprojects $(cmd)
superuser:
@echo -e "$(CYAN)Creating superuser:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python ./manage.py createsuperuser $(cmd)
superuser-dev:
@echo -e "$(CYAN)Creating superuser:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python ./manage.py createsuperuser $(cmd)
shutdown:
@echo -e "$(CYAN)Stopping services:$(COFF)"
@docker-compose -f docker-compose-prod.yml down
shutdown-dev:
@echo -e "$(CYAN)Stopping services:$(COFF)"
@docker-compose -f docker-compose-dev.yml down
shutdown-volumes:
@echo -e "$(CYAN)Stopping services and deleting volumes:$(COFF)"
@docker-compose -f docker-compose-prod.yml down --volumes
shutdown-volumes-dev:
@echo -e "$(CYAN)Stopping services and deleting volumes:$(COFF)"
@docker-compose -f docker-compose-dev.yml down --volumes
logs:
@echo -e "$(CYAN)Checking logs:$(COFF)"
@docker-compose -f docker-compose-prod.yml logs
logs-dev:
@echo -e "$(CYAN)Checking logs:$(COFF)"
@docker-compose -f docker-compose-dev.yml logs
logs-interactive:
@echo -e "$(CYAN)Checking logs interactively:$(COFF)"
@docker-compose -f docker-compose-prod.yml logs -f
logs-interactive-dev:
@echo -e "$(CYAN)Checking logs interactively:$(COFF)"
@docker-compose -f docker-compose-dev.yml logs -f
coverage-django:
@echo -e "$(CYAN)Running automatic code coverage check for Python:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web sh -c "coverage run -m py.test && coverage html && coverage report"
lint:
@echo -e "$(CYAN)Running Black check:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web black --check .
lint-fix:
@echo -e "$(CYAN)Running Black formatting:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web black .
test-project:
@echo -e "$(CYAN)Running all automatic django tests:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python manage.py test
test-website:
@echo -e "$(CYAN)Running automatic django tests on website app:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python manage.py test website.tests
test-users:
@echo -e "$(CYAN)Running automatic django tests on users app:$(COFF)"
@docker-compose -f docker-compose-dev.yml run --rm web python manage.py test users.tests