]> git.cworth.org Git - turbot/blob - Makefile
Initial commit of turbot
[turbot] / Makefile
1 DEPLOY_HOST=halibut.cworth.org
2 DEPLOY_DIR=/srv/halibut.cworth.org/turbot
3 export DEPLOY_DIR
4 DO_NOT_DEPLOY=env .gitignore
5 DO_NOT_DELETE=.turbot.env
6
7 help:
8         @echo "Available targets (in rough order of expected use):"
9         @echo
10         @echo " make bootstrap  Setup python virtual environment"
11         @echo " make reqs       Install dependencies into venv"
12         @echo " make run        Run a local server for testing"
13         @echo " make deploy     Deploy code to production"
14         @echo
15
16 .PHONY: require-venv
17 require-venv:
18 ifeq (, $(wildcard env))
19         $(error "No virtualenv found. Try 'make bootstrap'")
20 endif
21 ifndef VIRTUAL_ENV
22         $(error "No virtualenv active. Try '. ./env/bin/activate'")
23 endif
24
25 .PHONY: bootstrap
26 bootstrap:
27         @echo "=== Creating python virtual environment ==="
28         python3 -m virtualenv env
29
30         @echo
31         @echo "=== Installing pip-tools (to compile dependency list) ==="
32         (. ./env/bin/activate && pip install pip-tools)
33
34         @echo
35         @echo "Virtual environment is now available."
36         @echo "You must activate it by sourcing the activation script, such as:"
37         @echo
38         @echo " . ./env/bin/activate"
39         @echo
40         @echo "After that you can run 'make reqs' to install dependencies"
41
42 .PHONY: reqs
43 reqs: require-venv requirements.txt
44         pip install --require-hashes --upgrade -r requirements.txt
45         @echo
46         @echo "Dependencies are now installed. You can now do 'make run' or 'make deploy'"
47
48 requirements.txt: requirements.in
49 ifeq (, $(shell which pip-compile))
50         $(error "No pip-compile found. Try 'make bootstrap'")
51 endif
52         pip-compile --no-index --generate-hashes --allow-unsafe
53
54 run: require-venv
55         python3 ./turbot.py
56
57 turbot.wsgi: turbot.wsgi.in Makefile
58         envsubst < turbot.wsgi.in > turbot.wsgi
59
60 deploy:
61         rm -rf .deploy-source
62         git clone . .deploy-source
63         rm -rf .deploy-source/.git
64         make -C .deploy-source turbot.wsgi
65         (cd .deploy-source; rsync -avz \
66                 $(DO_NOT_DEPLOY:%=--exclude=%) \
67                 --exclude=$(DO_NOT_DELETE) \
68                 --delete \
69                 --delete-after \
70                 ./ $(DEPLOY_HOST):$(DEPLOY_DIR) )
71         rm -rf .deploy-source
72         ssh $(DEPLOY_HOST) '(cd $(DEPLOY_DIR); make bootstrap; . env/bin/activate; make reqs)'