#
# Run all tests
#
test: 
	node test/less-test.js

#
# Run benchmark
#
benchmark:
	node benchmark/less-benchmark.js

#
# Build less.js
#
SRC = lib/less
HEADER = build/header.js
VERSION = `cat package.json | grep version \
														| grep -o '[0-9]\.[0-9]\.[0-9]\+'`
DIST = dist/less-${VERSION}.js
RHINO = dist/less-rhino-${VERSION}.js
DIST_MIN = dist/less-${VERSION}.min.js

browser-prepare: DIST := test/browser/less.js

alpha: DIST := dist/less-${VERSION}-alpha.js
alpha: DIST_MIN := dist/less-${VERSION}-alpha.min.js

beta: DIST := dist/less-${VERSION}-beta.js
beta: DIST_MIN := dist/less-${VERSION}-beta.min.js

less:
	@@mkdir -p dist
	@@touch ${DIST}
	@@cat ${HEADER} | sed s/@VERSION/${VERSION}/ > ${DIST}
	@@echo "(function (window, undefined) {" >> ${DIST}
	@@cat build/require.js\
	      ${SRC}/parser.js\
	      ${SRC}/functions.js\
	      ${SRC}/colors.js\
	      ${SRC}/tree/*.js\
	      ${SRC}/tree.js\
	      ${SRC}/env.js\
	      ${SRC}/visitor.js\
	      ${SRC}/import-visitor.js\
	      ${SRC}/join-selector-visitor.js\
	      ${SRC}/extend-visitor.js\
	      ${SRC}/browser.js\
	      build/amd.js >> ${DIST}
	@@echo "})(window);" >> ${DIST}
	@@echo ${DIST} built.
	
browser-prepare: less
	node test/browser-test-prepare.js
	
browser-test: browser-prepare
	phantomjs test/browser/phantom-runner.js

browser-test-server: browser-prepare
	phantomjs test/browser/phantom-runner.js --no-tests

rhino:
	@@mkdir -p dist
	@@touch ${RHINO}
	@@cat build/require-rhino.js\
	      ${SRC}/parser.js\
	      ${SRC}/env.js\
	      ${SRC}/visitor.js\
	      ${SRC}/import-visitor.js\
	      ${SRC}/join-selector-visitor.js\
	      ${SRC}/extend-visitor.js\
	      ${SRC}/functions.js\
	      ${SRC}/colors.js\
	      ${SRC}/tree/*.js\
	      ${SRC}/tree.js\
	      ${SRC}/rhino.js > ${RHINO}
	@@echo ${RHINO} built.

min: less
	@@echo minifying...
	@@uglifyjs ${DIST} > ${DIST_MIN}
	@@echo ${DIST_MIN} built.

alpha: min

beta: min

alpha-release: alpha
	git add dist/*.js
	git commit -m "Update alpha ${VERSION}"

dist: min rhino
	git add dist/*
	git commit -a -m "(dist) build ${VERSION}"
	git archive master --prefix=less/ -o less-${VERSION}.tar.gz
	npm publish less-${VERSION}.tar.gz

stable:
	npm tag less@${VERSION} stable


.PHONY: test benchmark