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