1 | default: build
|
2 |
|
3 | BINDIR = bin
|
4 | SRCDIR = src
|
5 | LIBDIR = lib
|
6 | TESTDIR = test
|
7 | DISTDIR = dist
|
8 |
|
9 | SRC = $(shell find "$(SRCDIR)" -name "*.coffee" -type f | sort)
|
10 | LIB = $(SRC:$(SRCDIR)/%.coffee=$(LIBDIR)/%.js)
|
11 | TEST = $(shell find "$(TESTDIR)" -name "*.coffee" -type f | sort)
|
12 |
|
13 | COFFEE=node_modules/.bin/coffee --js
|
14 | MOCHA=node_modules/.bin/mocha --compilers coffee:coffee-script-redux/register -r coffee-script-redux/register -r test-setup.coffee -u tdd -R dot
|
15 | CJSIFY=node_modules/.bin/cjsify --minify
|
16 |
|
17 | all: build test
|
18 | build: $(LIB)
|
19 | bundle: $(DISTDIR)/bundle.js
|
20 |
|
21 | $(LIBDIR)/%.js: $(SRCDIR)/%.coffee
|
22 | @mkdir -p "$(@D)"
|
23 | $(COFFEE) <"$<" >"$@"
|
24 |
|
25 | $(DISTDIR)/bundle.js: $(LIB)
|
26 | @mkdir -p "$(@D)"
|
27 | $(CJSIFY) -x ProjectName $(shell node -pe 'require("./package.json").main') >"$@"
|
28 |
|
29 | .PHONY: phony-dep release test loc clean
|
30 | phony-dep:
|
31 |
|
32 | VERSION = $(shell node -pe 'require("./package.json").version')
|
33 | release-patch: NEXT_VERSION = $(shell node -pe 'require("semver").inc("$(VERSION)", "patch")')
|
34 | release-minor: NEXT_VERSION = $(shell node -pe 'require("semver").inc("$(VERSION)", "minor")')
|
35 | release-major: NEXT_VERSION = $(shell node -pe 'require("semver").inc("$(VERSION)", "major")')
|
36 | release-patch: release
|
37 | release-minor: release
|
38 | release-major: release
|
39 |
|
40 | release: build test
|
41 | @printf "Current version is $(VERSION). This will publish version $(NEXT_VERSION). Press [enter] to continue." >&2
|
42 | @read nothing
|
43 | node -e "\
|
44 | var j = require('./package.json');\
|
45 | j.version = '$(NEXT_VERSION)';\
|
46 | var s = JSON.stringify(j, null, 2) + '\n';\
|
47 | require('fs').writeFileSync('./package.json', s);"
|
48 | git commit package.json -m 'Version $(NEXT_VERSION)'
|
49 | git tag -a "v$(NEXT_VERSION)" -m "Version $(NEXT_VERSION)"
|
50 | git push --tags origin HEAD:master
|
51 | npm publish
|
52 |
|
53 | test:
|
54 | $(MOCHA) $(TEST)
|
55 | $(TESTDIR)/%.coffee: phony-dep
|
56 | $(MOCHA) "$@"
|
57 |
|
58 | loc:
|
59 | @wc -l "$(SRCDIR)"/*
|
60 |
|
61 | clean:
|
62 | @rm -rf "$(LIBDIR)" "$(DISTDIR)"
|