DO_COVERAGE=1
RELEASE=release
UGLIFY=uglifyjs
OUTPUT_DIR=output
TOTAL_LCOV_FILE=$(OUTPUT_DIR)/lcov.info
CHECKSTYLE=checkstyle
JSLINT=jslint

SRC := $(shell find src -name '*.js')
OBJS := $(patsubst %.js,%.jc,$(SRC))
STYLE := $(patsubst %.js,%.xml,$(SRC))
JSL := $(patsubst %.js,%.jslint,$(SRC))

%.jc : %.js
	-mkdir -p $(RELEASE)/$(@D)
	$(UGLIFY) -o $(RELEASE)/$(*D)/$(*F).js $<
%.xml : %.js
	-mkdir -p $(CHECKSTYLE)/$(@D)
	-jscheckstyle --checkstyle $< > $(CHECKSTYLE)/$(*D)/$(*F).xml
%.jslint : %.js
	-mkdir -p $(JSLINT)/$(@D)
	-hudson_jslint.pl $< > $(JSLINT)/$(*D)/$(*F).jslint

prod: unit_tests make_total_lcov cobertura_convert dupfind $(OBJS) $(STYLE) $(JSL)

setupJUTE:
ifdef WORKSPACE
	npm config set jute:docRoot '$(WORKSPACE)'
	npm restart jute
endif

make_total_lcov:
	/bin/rm -f /tmp/lcov.info ${TOTAL_LCOV_FILE}
	find $(OUTPUT_DIR) -name lcov.info -exec echo '-a {}' \; | xargs lcov > /tmp/lcov.info
	cp /tmp/lcov.info ${TOTAL_LCOV_FILE}

cobertura_convert:
	lcov_cobertura.py $(TOTAL_LCOV_FILE) -b src -o $(OUTPUT_DIR)/cob.xml

dupfind: $(SRC)
	java -Xmx512m -jar /usr/local/bin/dupfind.jar > output/dupfind.out

unit_tests: setupJUTE
	cd test && find . -name '*.html' -exec echo "{}?do_coverage=$(DO_COVERAGE)" \; | jute_submit_test --v8 --test -

.PHONY: unit_tests setupJUTE make_total_lcov cobertura_convert dupfind