#!/usr/bin/make

INSTALL         := install
INSTALL_DATA    := install -m 644
INSTALL_PROGRAM := install -m 755
INSTALL_DIR     := install -m 755 -d

EOLE_DIR        := $(DESTDIR)/usr/share/eole
PRETEMPLATE_DIR := $(EOLE_DIR)/pretemplate
POSTTEMPLATE_DIR := $(EOLE_DIR)/posttemplate
CREOLE_DIR      := $(EOLE_DIR)/creole
CREOLE_DICO     := $(CREOLE_DIR)/dicos

ZEPHIR_DIR      := $(DESTDIR)/usr/share/zephir
ZEPHIR_CONFIG   := $(ZEPHIR_DIR)/monitor/configs
ZEPHIR_DATA     := $(ZEPHIR_DIR)/monitor/data
ZEPHIR_STATS    := $(ZEPHIR_DIR)/monitor/stats
ZEPHIR_TMP      := $(ZEPHIR_DIR)/monitor/tmp
ZEPHIR_XML      := $(ZEPHIR_DIR)/monitor/xml
ZEPHIR_SCRIPTS  := $(ZEPHIR_DIR)/scripts
ZEPHIR_LOG      := $(DESTDIR)/var/log/zephir

EAD_BACKEND     := $(EOLE_DIR)/ead2/backend

CRON_D          := $(DESTDIR)/etc/cron.d
LOGROTATE_D     := $(DESTDIR)/etc/logrotate.d
MOTD_D          := $(DESTDIR)/etc/update-motd.d

PYTHON_DIST     := $(DESTDIR)/usr/lib/python2.6/dist-packages

ifneq ($(DESTDIR),)
PYTHON_OPTS     := --root $(DESTDIR)
endif

DICO            := dicos

CRON            := cron
LOGROTATE       := logrotate

DATA            := data
SCRIPTS         := scripts
PRETEMPLATE     := pretemplate
POSTTEMPLATE    := posttemplate
MOTD            := motd

EAD             := ead

ZEPHIR_TMPL     := zephir/monitor/agentmanager/templates

clean:
	$(RM) -r build
	$(MAKE) -C $(ZEPHIR_TMPL) clean

build: clean
	$(MAKE) -C $(ZEPHIR_TMPL) all

installdirs:
	$(INSTALL_DIR) $(EOLE_DIR)
	$(INSTALL_DIR) $(CREOLE_DIR)
	$(INSTALL_DIR) $(CREOLE_DICO)
	$(INSTALL_DIR) $(PRETEMPLATE_DIR)
	$(INSTALL_DIR) $(POSTTEMPLATE_DIR)

	$(INSTALL_DIR) $(ZEPHIR_DIR)
	$(INSTALL_DIR) $(ZEPHIR_CONFIG)
	$(INSTALL_DIR) $(ZEPHIR_DATA)
	$(INSTALL_DIR) $(ZEPHIR_STATS)
	$(INSTALL_DIR) $(ZEPHIR_TMP)
	$(INSTALL_DIR) $(ZEPHIR_XML)
	$(INSTALL_DIR) $(ZEPHIR_SCRIPTS)
	$(INSTALL_DIR) $(ZEPHIR_LOG)

	$(INSTALL_DIR) $(EAD_BACKEND)
	for ead in `find $(EAD)/ -type d`; do \
		$(INSTALL_DIR) $(EAD_BACKEND)/$${ead#*/}; \
	done

	$(INSTALL_DIR) $(CRON_D)
	$(INSTALL_DIR) $(LOGROTATE_D)
	$(INSTALL_DIR) $(MOTD_D)

install: build installdirs
	for dico in `ls -1 $(DICO)/`; do \
	 	$(INSTALL_DATA) $(DICO)/$$dico $(CREOLE_DICO)/ ; \
	done
	for ead in `find $(EAD)/ -type f`; do \
		$(INSTALL_DATA) $(EAD)/$${ead#*/} $(EAD_BACKEND)/`dirname $${ead#*/}`; \
	done

	for script in `ls -1 $(SCRIPTS)/`; do \
		$(INSTALL_PROGRAM) $(SCRIPTS)/$$script $(ZEPHIR_SCRIPTS)/ ; \
	done
	for pretemplate in `ls -1 $(PRETEMPLATE)/`; do \
		$(INSTALL_PROGRAM) $(PRETEMPLATE)/$$pretemplate $(PRETEMPLATE_DIR)/ ; \
	done
	for posttemplate in `ls -1 $(POSTTEMPLATE)/`; do \
		$(INSTALL_PROGRAM) $(POSTTEMPLATE)/$$posttemplate $(POSTTEMPLATE_DIR)/ ; \
	done
	for motdfile in `ls -1 $(MOTD)/`; do \
		$(INSTALL_PROGRAM) $(MOTD)/$$motdfile $(MOTD_D)/ ; \
	done
	for cron in `ls -1 $(CRON)/`; do \
		$(INSTALL_PROGRAM) $(CRON)/$$cron $(CRON_D)/ ; \
	done
	for logrotate in `ls -1 $(LOGROTATE)/`; do \
		$(INSTALL_DATA) $(LOGROTATE)/$$logrotate $(LOGROTATE_D)/ ; \
	done
	python setup.py install --no-compile --install-layout=deb $(PYTHON_OPTS)

uninstall:
	for dico in `find $(DICO)/ -type f`; do \
		$(RM) $(CREOLE_DICO)/$${dico#*/}; \
	done

	for ead in `find $(EAD)/ -type f`; do \
		$(RM) $(EAD_BACKEND)/$${ead#*/}; \
	done

	for script in `find $(SCRIPTS)/ -type f`; do \
		$(RM) $(ZEPHIR_SCRIPTS)/$${script#*/} ; \
	done
	for pretemplate in `find $(PRETEMPLATE)/ -type f`; do \
		$(RM) $(PRETEMPLATE_DIR)/$${pretemplate#*/} ; \
	done
	for pretemplate in `find $(POSTTEMPLATE)/ -type f`; do \
		$(RM) $(POSTTEMPLATE_DIR)/$${posttemplate#*/} ; \
	done
	for motdfile in `find $(MOTD)/ -type f`; do \
		$(RM) $(MOTD_D)/$${motdfile#*/} ; \
	done
	for cron in `find $(CRON)/ -type f`; do \
		$(RM) $(CRON_D)/$${cron#*/}; \
	done
	for logrotate in `find $(LOGROTATE)/ -type f`; do \
		$(RM) $(LOGROTATE_D)/$${logrotate#*/} ; \
	done

.PHONY: clean build installdirs install uninstall
