# You can set these variables from the command line.
GRUNT   		?= node_modules\.bin\grunt.cmd
BOWER           ?= node_modules\.bin\bower.cmd
PHANTOMJS       ?= node_modules\.bin\phantomjs.cmd
RJS				?= ./node_modules/.bin/r.js.cmd
SASS 			?= sass 
RMRF 			?= rmdir /q /s 
RMF 			?= del /q 
HTTPSERVE		?= ./node_modules/.bin/http-server.cmd

.PHONY: all help clean css minjs build

all: dev

help:
	@echo "Please use \`make <target>' where <target> is one of the following"
	@echo "  dev        to set up the development environment"
	@echo "  build      create minified builds containing converse.js and all its dependencies"
	@echo "  serve      to serve this directory via a webserver on port 8000"

########################################################################
## Miscellaneous

serve:
	$(HTTPSERVE) -p 8000

########################################################################
## Install dependencies

stamp-npm: package.json
	npm install
	$(GRUNT) touch:npm

stamp-bower: stamp-npm bower.json
	$(BOWER) install
	$(GRUNT) touch:bower

clean::
	@if EXIST stamp-npm $(RMF) stamp-npm
	@if EXIST stamp-bower $(RMF) stamp-bower
	@if EXIST node_modules\. $(RMRF) node_modules
	@if EXIST components\. $(RMRF) components

dev: clean
	npm install
	$(BOWER) update
	bundler install --path=.

########################################################################
## Builds

css::
	$(SASS) sass/converse.scss > css/converse.css

.PHONY: build
build:: stamp-npm
	$(GRUNT) jst
	$(GRUNT) cssmin
	$(RJS) -o src/build.js
	$(RJS) -o src/build.js optimize=none out=dist/converse.js
	$(RJS) -o src/build-no-jquery.js
	$(RJS) -o src/build-no-jquery.js optimize=none out=dist/converse.nojquery.js
	$(RJS) -o src/build-no-dependencies.js
	$(RJS) -o src/build-no-dependencies.js optimize=none out=dist/converse-no-dependencies.js

########################################################################
## Tests

check:: stamp-npm
	$(PHANTOMJS) node_modules/phantom-jasmine/lib/run_jasmine_test.coffee tests.html

