-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
133 lines (105 loc) · 3.28 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
# Use development settings for running django dev server.
ifeq ($(PRODUCTION),true)
export DJANGO_SETTINGS_MODULE=backend.settings
else
export DJANGO_SETTINGS_MODULE=backend.settings_dev
endif
# args
ifeq (run-django,$(firstword $(MAKECMDGOALS)))
PORT := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
$(eval $(PORT):;@:)
endif
ifeq (management,$(firstword $(MAKECMDGOALS)))
SUBCMD := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
$(eval $(SUBCMD):;@:)
endif
# virtualenv
VENV_PATH = .env
VENV_ACTIVATE_PATH = $(VENV_PATH)/bin/activate
VENV_PIP_PATH = $(VENV_PATH)/bin/pip
VENV_PYTHON_PATH = $(VENV_PATH)/bin/python
venv:
test -d $(VENV_PATH) || virtualenv $(VENV_PATH) --python=python3
touch $(VENV_ACTIVATE_PATH)
# Initializes virtual environment with basic requirements.
prod: venv
$(VENV_PIP_PATH) install -Ur requirements.txt
rm -rf node_modules/
npm install --production
# Installs development requirements.
dev: venv
$(VENV_PYTHON_PATH) -m pip install -r requirements.txt
$(VENV_PYTHON_PATH) -m pip install -r requirements-dev.txt
rm -rf node_modules/
npm install
# Django Management
management: venv
$(VENV_PYTHON_PATH) ./manage.py $(SUBCMD)
ping-google: venv
$(VENV_PYTHON_PATH) ./manage.py ping_google
fixtures: venv
$(VENV_PYTHON_PATH) ./manage.py loaddata site
$(VENV_PYTHON_PATH) ./manage.py loaddata outlet
$(VENV_PYTHON_PATH) ./manage.py loaddata contenttype
$(VENV_PYTHON_PATH) ./manage.py loaddata category
$(VENV_PYTHON_PATH) ./manage.py loaddata author
$(VENV_PYTHON_PATH) ./manage.py loaddata corpus
$(VENV_PYTHON_PATH) ./manage.py loaddata generateddocument
# Creates migrations and migrates database.
migrate: venv
$(VENV_PYTHON_PATH) ./manage.py makemigrations
$(VENV_PYTHON_PATH) ./manage.py makemigrations corpora
$(VENV_PYTHON_PATH) ./manage.py migrate
# run syncdb
syncdb: venv
$(VENV_PYTHON_PATH) ./manage.py migrate --run-syncdb
db-backup:
- mkdir .db_backups
mv db.sqlite3 .db_backups/$(shell date +'%y.%m.%d-%H:%M:%S').sqlite3
@echo "Database Backup: .db_backups/$(shell date +'%y.%m.%d-%H:%M:%S').sqlite3"
new-db:
@echo "All data in db.sqlite3 will be lost."
@read -p "Press any key to continue or Ctrl + C to abort." fake;
make db-backup
rm -f db.sqlite3
make syncdb
make migrate
make fixtures
make superuser
# create super user
superuser: venv
$(VENV_PYTHON_PATH) ./manage.py createsuperuser
# git
pull-master:
bash scripts/pull_master.sh
pull-develop:
bash scripts/pull_develop.sh
commit:
bash scripts/commit.sh
push:
bash scripts/push.sh
commitpush: commit push
# Runs development server.
# This step depends on `make dev`, however dependency is excluded to speed up dev server startup.
run-dev: venv
npm run dev & $(VENV_PYTHON_PATH) ./manage.py runserver
#run-npm run-django
run-npm: venv
npm run dev
run-django: venv
$(VENV_PYTHON_PATH) ./manage.py runserver 0.0.0.0:$(PORT)
# Builds files for distribution which will be placed in /static/dist
build: prod migrate venv
npm run build
$(VENV_PYTHON_PATH) ./manage.py collectstatic --noinput
# Cleans up folder by removing virtual environment, node modules and generated files.
clean-deps:
rm -rf $(VENV_PATH)
rm -rf node_modules
rm -rf static/dist
# Clears migrations
clean-migrations:
rm -rf backend/corpora/migrations/*
# Run linter
lint:
@npm run lint --silent