-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathMakefile
More file actions
59 lines (46 loc) · 1.57 KB
/
Makefile
File metadata and controls
59 lines (46 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
default: build
BIN = node_modules/.bin
SRCDIR = src
LIBDIR = lib
SRC = $(shell find "$(SRCDIR)" -name "*.coffee" -type f | sort)
LIB = $(SRC:$(SRCDIR)/%.coffee=$(LIBDIR)/%.js)
MOCHA_ARGS = --recursive --compilers coffee:coffee-script-redux/register \
-r coffee-script-redux/register --reporter spec --colors
MOCHA = $(BIN)/mocha
COFFEE = $(BIN)/coffee --js
.PHONY: test build
all: build test tag publish
build: $(LIB)
$(LIBDIR)/%.js: $(SRCDIR)/%.coffee
@mkdir -p "$(@D)"
(echo '/*!' ; cat LICENSE ; echo '*/' ; $(COFFEE) <"$<") >"$@"
test: build
$(MOCHA) $(MOCHA_ARGS)
tag:
git tag v`coffee -e "console.log JSON.parse(require('fs').readFileSync 'package.json').version"`
assert-on-clean-master:
@[[ "`git rev-parse --abbrev-ref HEAD`" = "master" ]] || \
$(call ERROR,"Not on master branch")
@git diff --exit-code --name-status || \
$(call ERROR,"Uncommitted changes!")
release-patch: assert-on-clean-master
release-minor: assert-on-clean-master
release-major: assert-on-clean-master
release-patch: BUMP = patch
release-minor: BUMP = minor
release-major: BUMP = major
release-patch: release
release-minor: release
release-major: release
release:
(export VERSION=`echo 'path = "./package.json"; p = require(path);' \
'p.version = require("semver").inc(p.version, "'$(BUMP)'");' \
'require("fs").writeFileSync(path, require("./lib/json")(p));' \
'console.log(p.version);' \
| node` ; \
git commit package.json -m "$$VERSION" && \
git tag -m "$$VERSION" -a "v$$VERSION" && \
git push origin "v$$VERSION")
define ERROR
(echo '[41m[30m '$(1)' [39m[49m' 1>&2; false)
endef