Add tests and build scripts.
[string-lerp.git] / Makefile
1 #!/usr/bin/make -f
2
3 JSTEST ?= node_modules/.bin/jstest
4 JSHINT ?= node_modules/.bin/jshint
5 UGLIFY ?= node_modules/.bin/uglifyjs
6 SOURCES = string-lerp.js
7 MINIFIED = $(SOURCES:.js=.min.js)
8
9 TESTS = $(wildcard tests/*.js);
10 LINT_TARGETS = $(addprefix build/stamp/,$(addsuffix .lint,$(SOURCES)))
11 TEST_TARGETS = $(addprefix build/stamp/,$(addsuffix .test,$(SOURCES)))
12
13 .PHONY: all check lint test
14
15 all: $(MINIFIED)
16
17 %.min.js: %.js $(UGLIFY)
18 $(UGLIFY) -m < $< > $@
19
20 build:
21 mkdir -p build/stamp build/dist
22
23 build/stamp/%.lint: % build
24 @mkdir -p $(@D)
25 $(JSHINT) $<
26 @touch $@
27
28 build/stamp/%.test: tests/% % build
29 @mkdir -p $(@D)
30 @echo $(JSTEST) $<
31 @$(JSTEST) $< > $@ || (cat $@ && rm -f $@ && exit 1)
32 @touch $@
33
34 check: lint test
35
36 lint: $(JSHINT) $(LINT_TARGETS)
37
38 test: $(JSTEST) $(TEST_TARGETS)
39
40 clean:
41 rm -rf build
42 rm -f $(MINIFIED)
43
44 distclean: clean
45 rm -rf node_modules
46
47 $(JSTEST):
48 npm install jstest
49
50 $(JSHINT):
51 npm install jshint
52
53 $(UGLIFY):
54 npm install uglify-js