프로젝트

일반

사용자정보

통계
| 개정판:

root / HServer / 00.Server / 00.Program / node_modules / bunyan / Makefile

이력 | 보기 | 이력해설 | 다운로드 (5.54 KB)

1 39 HKM
2
#---- Tools
3
4
NODEUNIT := ./node_modules/.bin/nodeunit
5
SUDO := sudo
6
ifeq ($(shell uname -s),SunOS)
7
	# On SunOS (e.g. SmartOS) we expect to run the test suite as the
8
	# root user -- necessary to run dtrace. Therefore `pfexec` isn't
9
	# necessary.
10
	SUDO :=
11
endif
12
DTRACE_UP_IN_HERE=
13
ifeq ($(shell uname -s),SunOS)
14
    DTRACE_UP_IN_HERE=1
15
endif
16
ifeq ($(shell uname -s),Darwin)
17
    DTRACE_UP_IN_HERE=1
18
endif
19
NODEOPT ?= $(HOME)/opt
20
21
22
#---- Files
23
24
JSSTYLE_FILES := $(shell find lib test tools examples -name "*.js") bin/bunyan
25
# All test files *except* dtrace.test.js.
26
NON_DTRACE_TEST_FILES := $(shell ls -1 test/*.test.js | grep -v dtrace | xargs)
27
28
29
#---- Targets
30
31
all $(NODEUNIT):
32
	npm install $(NPM_INSTALL_FLAGS)
33
34
# Ensure all version-carrying files have the same version.
35
.PHONY: versioncheck
36
versioncheck:
37
	@echo version is: $(shell cat package.json | json version)
38
	[[ `cat package.json | json version` == `grep '^## ' CHANGES.md | head -2 | tail -1 | awk '{print $$2}'` ]]
39
	[[ `cat package.json | json version` == `grep '^var VERSION' bin/bunyan | awk -F"'" '{print $$2}'` ]]
40
	[[ `cat package.json | json version` == `grep '^var VERSION' lib/bunyan.js | awk -F"'" '{print $$2}'` ]]
41
	@echo Version check ok.
42
43
.PHONY: cutarelease
44
cutarelease: check
45
	[[ -z `git status --short` ]]  # If this fails, the working dir is dirty.
46
	@which json 2>/dev/null 1>/dev/null && \
47
	    ver=$(shell json -f package.json version) && \
48
	    name=$(shell json -f package.json name) && \
49
	    publishedVer=$(shell npm view -j $(shell json -f package.json name)@$(shell json -f package.json version) version 2>/dev/null) && \
50
	    if [[ -n "$$publishedVer" ]]; then \
51
		echo "error: $$name@$$ver is already published to npm"; \
52
		exit 1; \
53
	    fi && \
54
	    echo "** Are you sure you want to tag and publish $$name@$$ver to npm?" && \
55
	    echo "** Enter to continue, Ctrl+C to abort." && \
56
	    read
57
	ver=$(shell cat package.json | json version) && \
58
	    date=$(shell date -u "+%Y-%m-%d") && \
59
	    git tag -a "$$ver" -m "version $$ver ($$date)" && \
60
	    git push --tags origin && \
61
	    npm publish
62
63
.PHONY: docs
64
docs: toc
65
	@[[ `which ronn` ]] || (echo "No 'ronn' on your PATH. Install with 'gem install ronn'" && exit 2)
66
	mkdir -p man/man1
67
	ronn --style=toc --manual="bunyan manual" --date=$(shell git log -1 --pretty=format:%cd --date=short) --roff --html docs/bunyan.1.ronn
68
	python -c 'import sys; h = open("docs/bunyan.1.html").read(); h = h.replace(".mp dt.flush {float:left;width:8ex}", ""); open("docs/bunyan.1.html", "w").write(h)'
69
	python -c 'import sys; h = open("docs/bunyan.1.html").read(); h = h.replace("</body>", """<a href="https://github.com/trentm/node-bunyan"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a></body>"""); open("docs/bunyan.1.html", "w").write(h)'
70
	@echo "# test with 'man ./docs/bunyan.1' and 'open ./docs/bunyan.1.html'"
71
72
# Re-generate the README.md table of contents.
73
toc:
74
	./node_modules/.bin/markdown-toc -i README.md
75
76
77
.PHONY: publish
78
publish:
79
	mkdir -p tmp
80
	[[ -d tmp/bunyan-gh-pages ]] || git clone git@github.com:trentm/node-bunyan.git tmp/bunyan-gh-pages
81
	cd tmp/bunyan-gh-pages && git checkout gh-pages && git pull --rebase origin gh-pages
82
	cp docs/index.html tmp/bunyan-gh-pages/index.html
83
	cp docs/bunyan.1.html tmp/bunyan-gh-pages/bunyan.1.html
84
	(cd tmp/bunyan-gh-pages \
85
		&& git commit -a -m "publish latest docs" \
86
		&& git push origin gh-pages || true)
87
88
.PHONY: distclean
89
distclean:
90
	rm -rf node_modules
91
92
93
#---- test
94
95
.PHONY: test
96
test: $(NODEUNIT)
97
	test -z "$(DTRACE_UP_IN_HERE)" || test -n "$(SKIP_DTRACE)" || \
98
		(node -e 'require("dtrace-provider").createDTraceProvider("isthisthingon")' && \
99
		echo "\nNote: Use 'SKIP_DTRACE=1 make test' to skip parts of the test suite that require root." && \
100
		$(SUDO) $(NODEUNIT) test/dtrace.test.js)
101
	$(NODEUNIT) $(NON_DTRACE_TEST_FILES)
102
103
# Test will all node supported versions (presumes install locations I use on
104
# my machine -- "~/opt/node-VER"):
105
# Note: 'test4' is last so (if all is well) I end up with a binary
106
# dtrace-provider build for my current default node version.
107
.PHONY: testall
108
testall: test7 test6 test012 test010 test4
109
110
.PHONY: test7
111
test7:
112
	@echo "# Test node 7.x (with node `$(NODEOPT)/node-7/bin/node --version`)"
113
	@$(NODEOPT)/node-7/bin/node --version | grep '^v7\.'
114
	PATH="$(NODEOPT)/node-7/bin:$(PATH)" make distclean all test
115
.PHONY: test6
116
test6:
117
	@echo "# Test node 6.x (with node `$(NODEOPT)/node-6/bin/node --version`)"
118
	@$(NODEOPT)/node-6/bin/node --version | grep '^v6\.'
119
	PATH="$(NODEOPT)/node-6/bin:$(PATH)" make distclean all test
120
.PHONY: test4
121
test4:
122
	@echo "# Test node 4.x (with node `$(NODEOPT)/node-4/bin/node --version`)"
123
	@$(NODEOPT)/node-4/bin/node --version | grep '^v4\.'
124
	PATH="$(NODEOPT)/node-4/bin:$(PATH)" make distclean all test
125
.PHONY: test012
126
test012:
127
	@echo "# Test node 0.12.x (with node `$(NODEOPT)/node-0.12/bin/node --version`)"
128
	@$(NODEOPT)/node-0.12/bin/node --version | grep '^v0\.12\.'
129
	PATH="$(NODEOPT)/node-0.12/bin:$(PATH)" make distclean all test
130
.PHONY: test010
131
test010:
132
	@echo "# Test node 0.10.x (with node `$(NODEOPT)/node-0.10/bin/node --version`)"
133
	@$(NODEOPT)/node-0.10/bin/node --version | grep '^v0\.10\.'
134
	PATH="$(NODEOPT)/node-0.10/bin:$(PATH)" make distclean all test
135
136
137
#---- check
138
139
.PHONY: check-jsstyle
140
check-jsstyle: $(JSSTYLE_FILES)
141
	./tools/jsstyle -o indent=4,doxygen,unparenthesized-return=0,blank-after-start-comment=0,leading-right-paren-ok=1 $(JSSTYLE_FILES)
142
143
.PHONY: check
144
check: check-jsstyle versioncheck
145
	@echo "Check ok."
146
147
.PHONY: prepush
148
prepush: check testall
149
	@echo "Okay to push."