.PHONY: all clean purge
JEMPLATE=../bin/jemplate
RENDERER:=$(shell echo `js-cpan Test/Base/bin/render-template`)
TEST_TEMPLATE:=$(shell echo `js-cpan Test/Base/template/test.html`)
INDEX_TEMPLATE:=$(shell echo `js-cpan Test/Base/template/index.html`)
TEST_LOCAL=template/test.html
INDEX_LOCAL=template/index.html
MD5SUM=perl -MDigest::MD5 -e \
'open X,shift;$$d=Digest::MD5->new;$$d->addfile(*X);print $$d->hexdigest'
TEST_TEMPLATE_MD5=$(word 1,$(shell $(MD5SUM) $(TEST_TEMPLATE)))
TEST_LOCAL_MD5=$(word 1,$(shell $(MD5SUM) $(TEST_LOCAL)))
INDEX_TEMPLATE_MD5=$(word 1,$(shell $(MD5SUM) $(INDEX_TEMPLATE)))
INDEX_LOCAL_MD5=$(word 1,$(shell $(MD5SUM) $(INDEX_LOCAL)))
ALL_T_HTML:=$(shell ls -1 t/*.t.js | perl -pe 's/js$$/html/;s/^t\///')
ALL_DIRS:=lib template
ALL_TARGETS:=$(ALL_T_HTML) index.html
ALL_LIBS= \
lib/Test/Base.js \
lib/Test/Builder.js \
lib/Test/Harness.js \
lib/Test/Harness/Browser.js \
ALL_JS= \
js/JemplateRuntime.js \
all: $(ALL_DIRS) $(ALL_TARGETS) $(ALL_LIBS) $(ALL_JS)
test: all
@echo
@echo 'Load index.html at the following URL to run browser tests:'
@plackup
clean:
rm -fr $(ALL_TARGETS) $(ALL_LIBS) $(ALL_JS)
if [ "$(TEST_TEMPLATE_MD5)" = \
"$(TEST_LOCAL_MD5)" ]; then rm -f $(TEST_LOCAL); fi
if [ "$(INDEX_TEMPLATE_MD5)" = \
"$(INDEX_LOCAL_MD5)" ]; then rm -f $(INDEX_LOCAL); fi
-find $(ALL_DIRS) -depth -type d | xargs rmdir 2> /dev/null
purge: clean
rm Makefile config.yaml
%.t.html: $(TEST_LOCAL)
perl $(RENDERER) $(notdir $<) $(@:%.t.html=t/%.t.js) > $@
index.html: $(INDEX_LOCAL) t/*.t.js
perl $(RENDERER) $(notdir $<) $(@:%.t.html=t/%.t.js) > $@
lib/Test/Base.js: lib/Test
cp -f `js-cpan Test.Base` $@
# ln -s ../../../lib/Test/Base.js $@
lib/Test/Builder.js: lib/Test
cp -f `js-cpan Test.Builder` $@
lib/Test/Harness.js: lib/Test
cp -f `js-cpan Test.Harness` $@
lib/Test/Harness/Browser.js: lib/Test/Harness
cp -f `js-cpan Test.Harness.Browser` $@
lib lib/Test lib/Test/Harness:
mkdir -p $@
$(TEST_LOCAL):
cp -f $(TEST_TEMPLATE) $@
$(INDEX_LOCAL):
cp -f $(INDEX_TEMPLATE) $@
template:
mkdir -p $@
js/JemplateRuntime.js:
$(JEMPLATE) --runtime=standard > $@