# @package      hubzero-hubgraph
# @file         Makefile
# @author       Nicholas J. Kisseberth <nkissebe@purdue.edu>
# @copyright    Copyright (c) 2010-2014 HUBzero Foundation, LLC.
# @license      http://www.gnu.org/licenses/lgpl-3.0.html LGPLv3
#
# Copyright (c) 2010-2014 HUBzero Foundation, LLC.
#
# This file is part of: The HUBzero(R) Platform for Scientific Collaboration
#
# The HUBzero(R) Platform for Scientific Collaboration (HUBzero) is free
# software: you can redistribute it and/or modify it under the terms of
# the GNU Lesser General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any
# later version.
#
# HUBzero is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# HUBzero is a registered trademark of HUBzero Foundation, LLC.
#

USRLIB=$(DESTDIR)/usr/lib
ETC=$(DESTDIR)/etc
USRBIN=$(DESTDIR)/usr/bin

all:
	npm rebuild
	npm install hubgraph/source
	npm install hubgraph-ext/source
	npm install hubgraph-hubzero/source

install:
	install --mode 0755 -d $(USRLIB)/hubzero-hubgraph
	cp -r --preserve=mode,timestamps,links node_modules $(USRLIB)/hubzero-hubgraph
	install --mode=0755 hzhubgraph-config -D $(USRBIN)/hzhubgraph-config
	install --mode=0755 hubgraph-monitor -D $(USRBIN)/hubgraph-monitor 
	install --mode=0755 hubgraph-server.init -D $(ETC)/init.d/hubgraph-server 
	install --mode=0755 hubgraph-server -D $(USRBIN)/hubgraph-server
	install --mode=0644 hubgraph-server.logrotate -D $(ETC)/logrotate.d/hubgraph-server
	if [ ! -d $(ETC)/sysconfig -a -d $(ETC)/default -a ! -r $(ETC)/default/hubgraph-server ]; then install --mode=0644 hubgraph-server.default -D $(ETC)/default/hubgraph-server; fi
	if [ -d $(ETC)/sysconfig -a ! -r $(ETC)/sysconfig/hubgraph-server ]; then install --mode=0644 hubgraph-server.default -D $(ETC)/sysconfig/hubgraph-server; fi
	if [ ! -r $(ETC)/hubgraph.conf ]; then install --mode=0600 hubgraph.conf -D $(ETC)/hubgraph.conf; fi

postinst:
	if id hubgraph > /dev/null 2>&1; then \
		IUID=`id --user hubgraph` ;	\
		IGID=`id --group hubgraph` ;	\
	else \
		IUID="NONE" ; \
		IGID="NONE" ; \
	fi ; \
    if [ "$IUID" = "NONE" ]; then \
		adduser --system --disabled-password  \
                --home /var/lib/hubgraph           \
                --force-badname --group --shell /bin/bash --gecos HUBgraph hubgraph ; \
    fi

	mkdir -p /var/lib/hubgraph/lib
	mkdir -p /var/lib/hubgraph/lib/resources
	mkdir -p /var/lib/hubgraph/lib/views
	mkdir -p /var/log/hubgraph
	mkdir -p /var/log/hubgraph/daily

	chown hubgraph:hubgraph /etc/hubgraph.conf
	chown hubgraph:hubgraph /var/lib/hubgraph/lib
	chown hubgraph:hubgraph /var/lib/hubgraph/lib/resources
	chown hubgraph:hubgraph /var/lib/hubgraph/lib/views
	chown hubgraph:hubgraph /var/log/hubgraph
	chown hubgraph:hubgraph /var/log/hubgraph/daily

	for f in /usr/lib/hubzero-hubgraph/node_modules/hubgraph-hubzero/lib/views/* ; \
	do \
		basename=`basename $$f` ; \
		if [ ! -e /var/lib/hubgraph/lib/views/$$basename -a ! -h /var/lib/hubgraph/lib/views/$$basename ]; then \
			ln -s /usr/lib/hubzero-hubgraph/node_modules/hubgraph-hubzero/lib/views/$$basename /var/lib/hubgraph/lib/views/$$basename ; \
			chown -h hubgraph:hubgraph /var/lib/hubgraph/lib/views/$basename ; \
		fi \
	done 

	for f in /usr/lib/hubzero-hubgraph/node_modules/hubgraph-hubzero/lib/resources/* ; \
	do \
		basename=`basename $$f` ; \
		if [ ! -e /var/lib/hubgraph/lib/resources/$$basename -a ! -h /var/lib/hubgraph/lib/resources/$$basename ]; then \
			ln -s /usr/lib/hubzero-hubgraph/node_modules/hubgraph-hubzero/lib/resources/$$basename /var/lib/hubgraph/lib/resources/$$basename ; \
			chown -h hubgraph:hubgraph /var/lib/hubgraph/lib/resources/$basename ; \
		fi \
	done

uninstall:
	rm -fr $(USRLIB)/hubzero-hubgraph
	rm -f $(USRBIN)/hzhubgraph-config
	rm -f $(USRBIN)/hubgraph-monitor
	rm -f $(USRBIN)/hubgraph-server
	rm -f $(ETC)/init.d/hubgraph-server
	rm -f $(ETC)/logrotate.d/hubgraph-server
	rm -f $(ETC)/default/hubgraph-server
	rm -f $(ETC)/sysconfig/hubgraph-server

	for f in /var/lib/hubgraph/lib/views/*; \
	do \
		if [ -h $$f ]; then \
			rm -f $$f; \
		fi \
	done 

	for f in /var/lib/hubgraph/lib/resources/*; \
	do \
		if [ -h $$f ]; then \
			rm -f $$f; \
		fi \
	done

	if [ -d /var/lib/hubgraph/lib/views ] ; then rmdir --ignore-fail-on-non-empty /var/lib/hubgraph/lib/views; fi
	if [ -d /var/lib/hubgraph/lib/resources ] ; then rmdir --ignore-fail-on-non-empty /var/lib/hubgraph/lib/resources; fi
	if [ -d /var/lib/hubgraph/lib ] ; then rmdir --ignore-fail-on-non-empty /var/lib/hubgraph/lib; fi

clean:
	rm -fr node_modules/hubgraph-ext
	rm -fr node_modules/hubgraph-hubzero
	rm -fr node_modules/hubgraph
	rm -fr node_modules/libxmljs/build

nodedeps:
	rm -fr node_modules
	mkdir node_modules
	npm install --ignore-scripts iniparser libxmljs mysql replify sax

.PHONY: all install uninstall postinst clean
