PACKAGE=`node -e "console.log(JSON.parse(require('fs').readFileSync('package.json')).name);"`
VERSION=`node -e "console.log(JSON.parse(require('fs').readFileSync('package.json')).version);"`
TARBALL=dist/${PACKAGE}-${VERSION}.tar.gz
JSHINT=node_modules/.bin/jshint
SOURCES=lib/*.js api-gateway

all: node_modules

node_modules: export HOME = /tmp
node_modules: package.json
	npm install

node_modules_production: export HOME = /tmp
node_modules_production:
	$(RM) -r node_modules
	npm install --production --loglevel warn

dist: Makefile README.md api-gateway package.json doc/ etc/ lib/ test/
	mkdir -p dist
	tar -cz -f ${TARBALL} --transform s,^,${PACKAGE}-${VERSION}/, $^

install: node_modules_production
	install -d ${DESTDIR}/etc/default \
		   ${DESTDIR}/etc/init.d \
		   ${DESTDIR}/etc/${PACKAGE} \
		   ${DESTDIR}/usr/share/doc/${PACKAGE} \
		   ${DESTDIR}/usr/lib/${PACKAGE} \
		   ${DESTDIR}/usr/share/${PACKAGE} \
		   ${DESTDIR}/usr/share/${PACKAGE}/lib \
		   ${DESTDIR}/usr/share/${PACKAGE}/node_modules \
		   ${DESTDIR}/usr/sbin
	install -m 755 -t ${DESTDIR}/usr/share/${PACKAGE} api-gateway
	ln -fs ../share/${PACKAGE}/api-gateway ${DESTDIR}/usr/sbin/api-gateway
	install -m 0644 lib/* ${DESTDIR}/usr/share/${PACKAGE}/lib
	install -m 0644 etc/${PACKAGE}/* ${DESTDIR}/etc/${PACKAGE}
	install -m 0644 README* doc/* ${DESTDIR}/usr/share/doc/${PACKAGE}
	rsync -r --exclude '.bin/*' node_modules/ ${DESTDIR}/usr/share/${PACKAGE}/node_modules/
	find ${DESTDIR}/usr/share/${PACKAGE}/node_modules -type f -exec chmod 644 {} '+'

test: node_modules $(SOURCES)
	npm test

checkstyle: node_modules $(SOURCES) .jshintrc
	$(JSHINT) $(SOURCES)

clean:
	$(RM) *.log

distclean: clean
	$(RM) -r node_modules dist coverage
