-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
164 lines (110 loc) · 4.1 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
# ENV defaults to local (so that requirements/local.txt are installed), but can be overridden
# (e.g. ENV=production make setup).
ENV ?= local
# PYTHON specifies the python binary to use when creating virtualenv
PYTHON ?= python3.6
# Editor can be defined globally but defaults to nano
EDITOR ?= nano
# By default we open the editor after copying settings, but can be overridden
# (e.g. EDIT_SETTINGS=no make settings).
EDIT_SETTINGS ?= yes
# Get root dir and project dir
PROJECT_ROOT ?= $(PWD)
SITE_ROOT ?= $(PROJECT_ROOT)/redux_saga_workshop
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
COFF ?= \033[0m
all: help
help:
@echo "+------<<<< Configuration >>>>------+"
@echo ""
@echo "ENV: $(ENV)"
@echo "PYTHON: $(PYTHON)"
@echo "PROJECT_ROOT: $(PROJECT_ROOT)"
@echo "SITE_ROOT: $(SITE_ROOT)"
@echo ""
@echo "+------<<<< Tasks >>>>------+"
@echo ""
@echo "$(CYAN)make setup$(COFF) - Sets up the project in your local machine"
@echo " This includes copying PyCharm files, creating local settings file, and setting up Docker."
@echo ""
@echo "$(CYAN)make pycharm$(COFF) - Copies default PyCharm settings (unless they already exist)"
@echo ""
@echo "$(CYAN)make test$(COFF) - Runs automatic tests on your python code"
@echo ""
@echo "$(CYAN)make coverage$(COFF) - Runs code test coverage calculation"
@echo ""
@echo "$(CYAN)make quality$(COFF) - Runs automatic code quality tests on your code"
@echo ""
docker: settings
@docker-compose down
@docker-compose build
@docker-compose up -d
@docker-compose logs -f
setup: pycharm settings
@echo "$(CYAN)Creating Docker images$(COFF)"
@docker-compose build
@echo "$(CYAN)Running django migrations$(COFF)"
@make migrate
@echo "$(CYAN)===================================================================="
@echo "SETUP SUCCEEDED"
@echo "Run 'make docker' to start Django development server and Webpack.$(COFF)"
pycharm: $(PROJECT_ROOT)/.idea
$(PROJECT_ROOT)/.idea:
@echo "$(CYAN)Creating pycharm settings from template$(COFF)"
@mkdir -p $(PROJECT_ROOT)/.idea && cp -R $(PROJECT_ROOT)/.idea_template/* $(PROJECT_ROOT)/.idea/
settings: $(SITE_ROOT)/settings/local.py
$(SITE_ROOT)/settings/local.py:
@echo "$(CYAN)Creating Django settings file$(COFF)"
@cp $(SITE_ROOT)/settings/local.py.example $(SITE_ROOT)/settings/local.py
@if [ $(EDIT_SETTINGS) = "yes" ]; then\
$(EDITOR) $(SITE_ROOT)/settings/local.py;\
fi
coverage:
@echo "$(CYAN)Running automatic code coverage check$(COFF)"
@docker-compose run --rm django coverage run -m py.test
@docker-compose run --rm django coverage html
@docker-compose run --rm django coverage report
test: clean
@echo "$(CYAN)Running automatic tests$(COFF)"
@docker-compose run --rm django py.test
clean:
@echo "$(CYAN)Cleaning pyc files$(COFF)"
@cd $(SITE_ROOT) && find . -name "*.pyc" -exec rm -rf {} \;
quality: stylelint eslint prospector
eslint:
@echo "$(CYAN)Running ESLint$(COFF)"
@docker-compose run --rm node npm run lint
prospector:
@echo "$(CYAN)Running Prospector$(COFF)"
@docker-compose run --rm django prospector
stylelint:
@echo "$(CYAN)Running StyleLint$(COFF)"
@docker-compose run --rm node npm run stylelint
docker-django:
docker-compose run --rm django $(cmd)
bash:
docker-compose run --rm django bash
docker-manage:
docker-compose run --rm django ./manage.py $(cmd)
shell:
docker-compose run --rm django ./manage.py shell
makemigrations:
docker-compose run --rm django ./manage.py makemigrations $(cmd)
migrate:
docker-compose run --rm django ./manage.py migrate $(cmd)
docker-logs:
docker-compose logs -f
makemessages:
docker-compose run --rm django ./manage.py makemessages -a
docker-compose run --rm django ./manage.py makemessages -a -d djangojs
compilemessages:
docker-compose run --rm django ./manage.py compilemessages
psql:
docker-compose exec postgres psql --user redux_saga_workshop --dbname redux_saga_workshop