api.spaceplanner.app

Spaceplanner API
git clone git://jacobedwards.org/api.spaceplanner.app
Log | Files | Refs

Makefile (1849B)


      1 name = api.spaceplanner.app
      2 prog = api
      3 
      4 # Database
      5 dbname = ${name}
      6 dbdir = /var/postgresql/data
      7 dbuser = _spaceplanner
      8 dburl = postgresql://${dbuser}@localhost/${dbname}
      9 dbsql = migration
     10 dbbackups = backups
     11 
     12 # Server
     13 srvuser = _spaceplanner
     14 srvroot = /var/www
     15 srvdir = /htdocs/api.spaceplanner.app
     16 srvsock = ${srvroot}/run/api.spaceplanner.app.sock
     17 srvsockuser = www
     18 
     19 all: ${name}
     20 
     21 ${name}:
     22 	go build
     23 
     24 # I would use ${name} as dependancy, but since this must be run as
     25 # root and I offload everything to go(1), this isn't what I want.
     26 run:
     27 	# This is obviously not great with the private keys in there
     28 	# In the future I intend to load from outside the chroot.
     29 	mkdir -p ${srvroot}/etc/spaceplanner.app
     30 	install -o ${srvuser} -g ${srvuser} -m 0700 api.config ${srvroot}/etc/spaceplanner.app/api.config
     31 	install -o ${srvuser} -g ${srvuser} -m 0700 ${prog} ${srvroot}/${srvdir}/${prog}
     32 	kfcgi -dv -n 1 -N 1 \
     33 		-s ${srvsock} -u ${srvsockuser} \
     34 		-U ${srvuser} \
     35 		-p ${srvroot} ${srvdir}/${prog} < api.config 2>/var/www/logs/spaceplanner.api.log 
     36 
     37 test-run: ${name}
     38 	./${prog} -t -s -b localhost:8888 < api.config
     39 
     40 clean:
     41 	rm -f ${prog}
     42 
     43 db: createdb updatedb
     44 
     45 createdb:
     46 	createdb -O ${dbuser} ${dbname}
     47 
     48 # TODO:
     49 # Have last applied update be written to database specific file
     50 # (${dbname})
     51 updatedb: backupdb
     52 	for f in $$(./scripts/dbupdates ${dbsql}); do \
     53 		psql ${dburl} ${dbuser} < "${dbsql}/$$f" || { \
     54 			echo "FAILED TO APPLY $$f" ; \
     55 			exit 1 ; \
     56 		} ; \
     57 		echo "APPLIED $$f" ; \
     58 		echo "$$f" > ${dbsql}/last ; \
     59 	done
     60 
     61 backupdb:
     62 	mkdir -p ${dbbackups}
     63 	pg_dump ${dbname} > ${dbbackups}/$$(date +%FT%T).sql
     64 
     65 restoredb: backupdb
     66 	b="${dbbackups}/$$(ls ${dbbackups} | sed -n '$p')"; \
     67 	make backupdb; \
     68 	psql ${dburl} < "$$b" && \
     69 	make backupdb
     70 
     71 editdb:
     72 	psql ${dburl}
     73 
     74 .PHONY: all run clean db createdb updatedb backupdb restoredb editdb