### Programme ###
# XSLT-Prozessor:
PROCESSOR=xsltproc
PFLAGS=
# XML-Validator
VALIDATOR=xmllint
VFLAGS=--noout --valid
# Downloadmanager (Alternativ: curl, fetch):
WGET=wget --timestamping
# rsync
RSYNC=rsync
RSYNC_FLAGS=--verbose --recursive --delete --delete-after --delete-excluded --checksum
# Editor
EDITOR?=vim
# Browser
BROWSER?=links

### Ressourcen ###
# XSLT-Stylesheets:
STYLE=xsl/xhtml.xsl
DS_STYLE=xsl/datenspuren/xhtml.xsl
# Document-Type-Definition:
DTD:=dtd/c3d2web.dtd
# Navigationsleiste:
NAVIGATION=content/navigation.xml
# Chaosupdates:
WWW_CCC_DE_UPDATES=chaosupdates.rdf

### Ziele ###
# Dateinamen der zu erzeugenden html-Dateien:
CONTENT=$(PAGES) $(NEWS_PAGES) $(DS_PAGES) $(NEWSFILES)

# 'normale' Seiten:
PAGES:=$(patsubst content/pages/%.xml, build/%.html, $(wildcard content/pages/*.xml))
# Seiten zu einzelnen News-Items:
NEWS_PAGES:=$(patsubst content/news/%.xml, build/news/%.html, $(wildcard content/news/*.xml))
# News-Index und Feeds:
NEWSFILES:=www/news.html www/news-rss.xml www/news-atom.xml
# Datenspuren-Seiten:
DS_PAGES:=$(patsubst content/datenspuren/%.xml, www/datenspuren/%.html, $(wildcard content/datenspuren/*.xml)) www/datenspuren/schedule.html

# Quellen

NEWSITEMS:=$(wildcard content/news/*.xml))
CLEAN=$(CONTENT) $(NEWSFILES) $(WWW_CCC_DE_UPDATES)


### Defaults ###

www: $(CONTENT) $(DTD)
	$(RSYNC) $(RSYNC_FLAGS) content/static build/ $@

.SILENT: check
.PHONY: check
check: $(PAGES)
	# XXX
	for page in $^ ; do \
	  echo "Checking $${page}..." ; \
	  $(VALIDATOR) $(VFLAGS) $${page} ; \
	done
	rm -f www/DTD

### Regeln für den XSLT-Prozess ###
www/news.html: $(STYLE)
www/news-rss.xml: xsl/rss.xsl
www/news-atom.xml: xsl/atom.xsl

www/news.html www/news-rss.xml www/news-atom.xml: $(NAVIGATION) $(NEWSITEMS)
	for item in $(NEWSITEMS) ; do \
	  $(VALIDATOR) $(VFLAGS) $${item} || exit 1 ; \
	done

	sh scripts/gen_news.xml.sh $(NEWS_ITEMS) | $(PROCESSOR) $(PFLAGS) -o $@ -

content/datenspuren/schedule.xml: www/datenspuren/fahrplan/days.de.html
	cp $< $@

build/%.html: content/pages/%.xml $(STYLE) $(NAVIGATION) $(WWW_CCC_DE_UPDATES)
	$(VALIDATOR) $(VFLAGS) $<
	$(PROCESSOR) $(PFLAGS) -o $@ $(STYLE) $<

www/datenspuren/%.html: content/datenspuren/%.xml $(DS_STYLE)
        # -- MNE-20060421: Lt. Astro geht Validierung noch nicht mit dem Fahrplan,
        #                  daher fuer Datenspuren auskommentiert
	$(VALIDATOR) $(VFLAGS) $<
	$(PROCESSOR) $(PFLAGS) -o $@ $(DS_STYLE) $<


#www/news/%.html: content/news/%.xml $(STYLE) $(NAVIGATION) $(WWW_CCC_DE_UPDATES)
#	$(VALIDATOR) $(VFLAGS) $<
#	$(PROCESSOR) $(PFLAGS) -o $@ $(STYLE) $<

### Die neuesten Chaosupdates holen ###
$(WWW_CCC_DE_UPDATES):
	$(WGET) http://www.ccc.de/updates/$(WWW_CCC_DE_UPDATES) || \
	cp chaosupdates-2006-01-02.rdf $@

### Mr. Propper ###
clean:
	rm -f $(CLEAN)

mrproper: clean
	rm -f $(WWW_CCC_DE_UPDATES)
	rm -f $(XHTML_DTD_FILES)
	rm -rf www-export
