# Bloated Makefile to make new releases of pisg

all: release

# Ugly hack to get the version number from Pisg.pm
VER = $(shell grep "version =>" modules/Pisg.pm | sed 's/[^"]*"\([^"]*\)".*/\1/')

# append date if SNAPSHOT is defined
ifeq ($(SNAPSHOT),)
	VERSION = $(VER)
else
	VERSION = $(VER)_$(shell date +%Y%m%d)
endif

DIRNAME = pisg-$(VERSION)

TARFILE = pisg-$(VERSION).tar.gz
ZIPFILE = pisg-$(VERSION).zip

FILES = pisg \
	 COPYING \
	 README \
	 pisg.cfg \
	 lang.txt

DOCS = docs/FORMATS \
	 docs/Changelog \
	 docs/CREDITS \
	 docs/pisg-doc.html \
	 docs/pisg-doc.txt \
	 docs/pisg-doc.xml \
	 docs/pisg.sgml \
	 docs/pisg.1 \

DEVDOCS = docs/dev/API

GFX = gfx/green-h.png \
	 gfx/green-v.png \
	 gfx/blue-h.png \
	 gfx/blue-v.png \
	 gfx/yellow-h.png \
	 gfx/yellow-v.png \
	 gfx/red-h.png \
	 gfx/red-v.png \

SCRIPTS = scripts/crontab \
	   scripts/dropegg.pl \
	   scripts/egg2mirc.awk \
	   scripts/eggdrop-pisg.tcl \
	   scripts/mirc2egg.sed \
	   scripts/sirc-timestamp.pl \
	   scripts/windows-ftp-upload.txt

ADDALIAS = scripts/addalias/addalias.pl \
	    scripts/addalias/README

PUM = scripts/pum/pum.pl \
	    scripts/pum/pum.conf

MODULESDIR = modules

MAIN_MODULE = $(MODULESDIR)/Pisg.pm

PISG_MODULES = $(MODULESDIR)/Pisg/Common.pm \
	       $(MODULESDIR)/Pisg/HTMLGenerator.pm

PARSER_MODULES = $(MODULESDIR)/Pisg/Parser/Logfile.pm

FORMAT_MODULES = $(MODULESDIR)/Pisg/Parser/Format/axur.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/bxlog.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/bobot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/blootbot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/dancer.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/dircproxy.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/DCpp.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/eggdrop.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/energymech.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/grufti.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/hydra.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/ircle.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/infobot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/IRCAP.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/irssi.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/ircII.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/javabot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/konversation.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/kvirc.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/lulubot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/oer.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/mbot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/miau.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/mIRC.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/mIRC6.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/mIRC6hack.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/mozbot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/muh.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/muh2.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/moobot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/perlbot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/pircbot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/psybnc.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/sirc.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/supy.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/virc98.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/Vision.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/Trillian.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/Template.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/RacBot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/rbot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/xchat.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/winbot.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/weechat.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/weechat3.pm \
		 $(MODULESDIR)/Pisg/Parser/Format/zcbot.pm \

docs:
	$(MAKE) -C docs VERSION=$(VERSION)

release: docs
	mkdir -p newrelease

	cat lang/readme.txt >> lang.txt
	cat lang/*.dat >> lang.txt

	mkdir $(DIRNAME)
	cp $(FILES) $(DIRNAME)

	mkdir $(DIRNAME)/scripts
	cp $(SCRIPTS) $(DIRNAME)/scripts

	mkdir $(DIRNAME)/gfx
	cp $(GFX) $(DIRNAME)/gfx

	mkdir $(DIRNAME)/docs
	cp -r $(DOCS) $(DIRNAME)/docs

	mkdir $(DIRNAME)/layout
	cp layout/*.css $(DIRNAME)/layout

	mkdir $(DIRNAME)/docs/dev
	cp $(DEVDOCS) $(DIRNAME)/docs/dev

	mkdir $(DIRNAME)/scripts/addalias
	cp $(ADDALIAS) $(DIRNAME)/scripts/addalias

	mkdir $(DIRNAME)/scripts/pum
	cp $(PUM) $(DIRNAME)/scripts/pum

	mkdir $(DIRNAME)/$(MODULESDIR)

	mkdir $(DIRNAME)/$(MODULESDIR)/Pisg
	mkdir $(DIRNAME)/$(MODULESDIR)/Pisg/Parser
	mkdir $(DIRNAME)/$(MODULESDIR)/Pisg/Parser/Format
	cp $(MAIN_MODULE) $(DIRNAME)/$(MODULESDIR)/
	cp $(PISG_MODULES) $(DIRNAME)/$(MODULESDIR)/Pisg/
	cp $(PARSER_MODULES) $(DIRNAME)/$(MODULESDIR)/Pisg/Parser
	cp $(FORMAT_MODULES) $(DIRNAME)/$(MODULESDIR)/Pisg/Parser/Format

	perl -i -pe 's/^(.*version => ")[^"]*(".*)/$${1}$(VERSION)$${2}/' $(DIRNAME)/$(MODULESDIR)/Pisg.pm

	tar zcfv newrelease/$(TARFILE) $(DIRNAME)
	zip -r pisg $(DIRNAME)
	mv pisg.zip newrelease/$(ZIPFILE)
	mv $(DIRNAME) newrelease

clean:
	cd docs && make clean
	rm -f lang.txt
	rm -rf newrelease/$(TARFILE)
	rm -rf newrelease/$(ZIPFILE)
	rm -rf newrelease/$(DIRNAME)
	rm -rf $(DIRNAME)

distclean: clean
	rm -rf newrelease/

.PHONY: all release docs clean distclean
