~roadmr/isitdeployable/revision-disappeared-ohnoes

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
PGNAME = $(shell DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) PYTHONPATH=$(PYTHONPATH) $(PYTHON) -c "from django.conf import settings; print settings.DATABASES['default']['NAME']")
PGHOST = $(shell DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) PYTHONPATH=$(PYTHONPATH) $(PYTHON) -c "from django.conf import settings; print settings.DATABASES['default']['HOST']")
PGUSER = $(shell DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) PYTHONPATH=$(PYTHONPATH) $(PYTHON) -c "from django.conf import settings; print settings.DATABASES['default']['USER']")
DATA_DIR = $(PGHOST)/data
LOG_FILE = $(PGHOST)/postgresql.log
CONF_FILE = $(PGHOST)/postgresql.conf
PGBIN = /usr/lib/postgresql/9.3/bin
PGCTL = $(PGBIN)/pg_ctl
PGINIT = $(PGBIN)/initdb
PGSOCKET = $(PGHOST)/.s.PGSQL.5432

migrate:
	$(DJANGO_MANAGE) migrate


# The weird setup-db/pgsocket dependency is so that other rules can depend
# on setup-db which is nice, but the behavior is that if the socket exists,
# the database won't be started again.
setup-db: $(PGSOCKET)

$(PGSOCKET):
	# If the socket didn't exist, means the db server was stopped.
	# In this case it should be safe to blast the directory as developers
	# don't usually stop the db server if they care about the (transient,
	# anyway) data.
	rm -rf $(DATA_DIR)
	mkdir -p $(DATA_DIR)
	$(PGINIT) -A trust -D $(DATA_DIR)
	echo "fsync = off" > $(CONF_FILE)
	echo "standard_conforming_strings = off" >> $(CONF_FILE)
	echo "escape_string_warning = off" >> $(CONF_FILE)
	$(PGCTL) start -w -D $(DATA_DIR) -l $(LOG_FILE) -o "-F -k $(PGHOST) -h ''"
	PGHOST=$(PGHOST) createdb $(PGNAME)
	PGHOST=$(PGHOST) createuser --superuser --createdb $(PGUSER)

start-db:
	$(MAKE) setup-db
	$(DJANGO_MANAGE) syncdb --noinput  # TODO: Remove once south is dropped.
	$(MAKE) migrate

stop-db:
	PGHOST=$(PGHOST) dropdb $(PGNAME)
	$(PGCTL) stop -w -D $(DATA_DIR) -m smart
	rm -rf $(PGHOST)

reset-db:
	PGHOST=$(PGHOST) dropdb $(PGNAME)
	PGHOST=$(PGHOST) createdb $(PGNAME)
	$(MAKE) migrate