#
# Makefile for dish
# 
# It is needed only to create manual pages, VERSION file, and packages
# For installing the software you can use essentially ./install.sh
#

PROG = dish
DOC_MAN_NAME="tool for parallel sysadmin of multiple hosts"
DOC_MAN = $(PROG).1
DOC_TEXT = $(PROG).txt
DOC_HTML = $(DOC_MAN).html
DOC_SEEALSO = seealso
DIR_SRC = src
VERSION = VERSION

# Installation directories
prefix = /usr/local
exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
mandir = $(prefix)/man
man1dir = $(mandir)/man1
# Debian directories
destbin = usr/bin
destman = usr/share/man/man1
destdoc = usr/share/doc/dish


all: $(VERSION) $(DIR_SRC)/$(DOC_MAN) $(DIR_SRC)/$(DOC_HTML) $(DIR_SRC)/$(DOC_SEEALSO) $(DIR_SRC)/$(DOC_TEXT)
	@echo Done.

$(VERSION): $(DIR_SRC)/$(PROG)
	$< -V > $(VERSION)

$(DIR_SRC)/$(DOC_MAN): $(DIR_SRC)/$(PROG) $(DIR_SRC)/$(DOC_SEEALSO)
	cd $(DIR_SRC) ; \
	help2man -N -n $(DOC_MAN_NAME) -i $(DOC_SEEALSO) ../$< \
	|sed -e 's/\([( ]\)\\fB/\1/g; s/\([^\\]\)-/\1\\-/g; s/\([^\\]\)-/\1\\-/g;' > $(DOC_MAN)

$(DIR_SRC)/$(DOC_TEXT): $(DIR_SRC)/$(DOC_MAN)
	cd $(DIR_SRC) ; \
	./$(PROG) -Help > $(DOC_TEXT)

$(DIR_SRC)/$(DOC_HTML): $(DIR_SRC)/$(DOC_MAN)
	cd $(DIR_SRC) ; \
	which man2html 2>&1 |grep ^\/ && { man2html $(DOC_MAN) |egrep -vi "(^Section:|^Content-type|Return to Main Contents|^Time:|<H1>$<</H1>)" |sed -e 's_H2>_H3>_g' > $(DOC_HTML) ; } || true

clean:
	rm -f $(VERSION) tar.stamp $(DIR_SRC)/$(DOC_MAN) $(DIR_SRC)/$(DOC_HTML) $(DIR_SRC)/$(DOC_TEXT)

install: installdirs all
	if [ -n "$(DESTDIR)" ] ; then \
		DESTBIN=$(DESTDIR)/$(destbin) ; \
		DESTMAN=$(DESTDIR)/$(destman) ; \
	else \
		DESTBIN=$(bindir) && DESTMAN=$(man1dir) ; \
	fi ; \
	./install.sh -i -q -b $$DESTBIN -m $$DESTMAN

uninstall:
	if [ -n "$(DESTDIR)" ] ; then \
		DESTBIN=$(DESTDIR)/$(destbin) ; \
		DESTMAN=$(DESTDIR)/$(destman) ; \
	else \
		DESTBIN=$(bindir) && DESTMAN=$(man1dir) ; \
	fi ; \
	./install.sh -u -q -b $$DESTBIN -m $$DESTMAN

install-doc-base: $(DIR_SRC)/$(DOC_HTML) $(DIR_SRC)/$(DOC_TEXT)
	if [ -n "$(DESTDIR)" ] ; then \
		DESTDOC=$(DESTDIR)/$(destdoc) ; \
		/bin/cp -p $(DIR_SRC)/$(DOC_HTML) $$DESTDOC/html && \
		/bin/cp -p $(DIR_SRC)/$(DOC_TEXT) $$DESTDOC && \
		cd $$DESTDOC/html && ln -s $(DOC_HTML) index.html ; \
	else \
		echo "This target should be used only from debian/rules" ; \
	fi ;

installdirs: $(DIR_SRC)/mkinstalldirs
	cd $(DIR_SRC) ; \
	if [ -n "$(DESTDIR)" ] ; then \
		DESTBIN=$(DESTDIR)/$(destbin) ; \
		DESTMAN=$(DESTDIR)/$(destman) ; \
	else \
		DESTBIN=$(bindir) && DESTMAN=$(man1dir) ; \
	fi ; \
	./mkinstalldirs $$DESTBIN $$DESTMAN

tar: all tar.stamp

tar.stamp: NEWS README
	touch tar.stamp ; \
	vers=`cat $(VERSION)` ; \
	ups=`test -f debian/changelog && \
		awk 'NR==3 {print $0}' debian/changelog | \
		grep -i 'new upstream' >/dev/null 2>&1 && echo 0` ; \
	exclude="--exclude=debian --exclude=*-stamp --exclude=*.stamp \
		--exclude=.*.swp" ; \
	GZIP=--best ; \
	export GZIP ; \
	cd .. && tar czpvf $(PROG)-$$vers.tar.gz $(PROG)-$$vers $$exclude ; \
	if [ $$ups ]; then \
	     cp -p $(PROG)-$$vers.tar.gz $(PROG)_$$vers.orig.tar.gz ; \
	fi ; \

tar-full: all
	vers=`cat $(VERSION)` ; \
	dvers=`test -f debian/changelog && \
	       sed -n -e '1s/\(.*(\)\(.*\)\().*\)/\2/p' debian/changelog` ; \
	exclude="--exclude=.*.swp" ; \
	GZIP=--best ; \
	export GZIP ; \
	cd .. && \
	tar czpvf $(PROG)_$$dvers.full.tar.gz $(PROG)-$$vers $$exclude

debsrc: all tar tar-full
	debuild -S

packages: tar tar-full
	@( debuild && debuild clean && \
	dvers=`test -f debian/changelog && \
	       sed -n -e '1s/\(.*(\)\(.*\)\().*\)/\2/p' debian/changelog` && \
	echo "" && \
	echo Trying to convert $(PROG)_$${dvers}_all.deb to RPM && \
	su -c "umask 022 && alien -k -r ../$(PROG)_$${dvers}_all.deb" && \
	mv -f *.rpm ..)

sums:
	@vers=`cat $(VERSION)` ; \
	dvers=`sed -n -e '1s/\(.*(\)\(.*\)\().*\)/\2/p' debian/changelog` ; \
	cd .. && \
	sha1sum $(PROG)-$$vers.tar.gz $(PROG)-$$dvers.noarch.rpm \
		>$(PROG)-$$vers.sha1
