# Provides basic build rules for building minified JS and vulcanized HTML.
#
# Targets
# =======
#   core_js: Builds res/js/core.js.
#
#   elements_html: Builds res/vul/elements.html.
#
#   clean_webtools: Cleans out core.js and elements.html.
#
# Usage
# =====
#  Add the following to your Makefile:
#
#    include ../webtools/webtools.mk
#
#  And define the following:
#
#  BOWER_DIR: The bower directory.
#
#  CORE_SOURCE_FILES: a list of source files that make up core.js.
#     These files should be either present in the project or brought into
#     $(BOWER_DIR) via bower. This makefile runs bower on the local directory
#     to bring in dependencies.
#
#  VULCANIZE1: If defined then this presumes vulcanize 1.0 or later is installed
#     and uses the new command line flags. This can be removed once all projects
#     have moved to vulcanize 1.x.

# Propagate exit status if any command in a pipeline fails.
SHELL=/bin/bash -o pipefail

# Get the directory of this makefile to refer to common resources relative to this.
WEBTOOLS_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))

##### core_js ####

# The core_js target builds res/js/core.js from the concatenated source file
# listed in CORE_SOURCE_FILES. The result is minified.
.PHONY: core_js
core_js: node_modules/lastupdate res/js/core.js res/common

# The debug_core_js target does the same thing as core_js, but the file isn't
# minified.
debug_core_js: res/js/core-debug.js
	cp res/js/core-debug.js res/js/core.js

res/js/core.js: res/js/core-debug.js ./node_modules/.bin/uglifyjs
	./node_modules/.bin/uglifyjs res/js/core-debug.js -o res/js/core.js

res/js/core-debug.js: Makefile $(BOWER_DIR)/lastupdate $(CORE_SOURCE_FILES)
	-mkdir res/js
	awk 'FNR==1{print ""}{print}' $(CORE_SOURCE_FILES) > res/js/core-debug.js

$(BOWER_DIR)/lastupdate: bower.json ./node_modules/.bin/bower
	./node_modules/.bin/bower update
	ln -sf ../../$(BOWER_DIR) res/imp/bower_components
	touch $(BOWER_DIR)/lastupdate

res/common:
	ln -sf $(WEBTOOLS_DIR)/../res res/common

#### elements_html ####

# The elements_html target builds a vulcanized res/vul/elements.html from
# elements.html.
elements_html: core_js res/vul/elements.html

# The debug_elements_html target just copies elements.html into res/vul/elements.html.
debug_elements_html:
	-mkdir res/vul
	cp elements.html res/vul/elements.html
	ln -sf ../../$(BOWER_DIR) res/imp/bower_components

res/vul/elements.html: res/imp/*.html elements.html ./node_modules/.bin/vulcanize
	$(WEBTOOLS_DIR)/vulcanize.sh

#### clean_webtools ####

clean_webtools:
	-rm res/vul/elements.html
	-rm res/js/core.js
	-rm res/js/core-debug.js

#### Rules to npm install needed tools ####

./node_modules/.bin/vulcanize:
	npm install vulcanize --save-dev

./node_modules/.bin/bower:
	npm install bower --save-dev

./node_modules/.bin/uglifyjs:
	npm install uglify-js --save-dev

#### npm install dependencies ####

node_modules/lastupdate: package.json
	npm install
	touch node_modules/lastupdate

