forked from restify/clients
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
148 lines (107 loc) · 3.53 KB
/
Makefile
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#
# Directories
#
ROOT_SLASH := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
ROOT := $(patsubst %/,%,$(ROOT_SLASH))
TEST := $(ROOT)/test
TOOLS := $(ROOT)/tools
GITHOOKS_SRC := $(TOOLS)/githooks
GITHOOKS_DEST := $(ROOT)/.git/hooks
#
# Generated Directories
#
NODE_MODULES := $(ROOT)/node_modules
NODE_BIN := $(NODE_MODULES)/.bin
COVERAGE := $(ROOT)/.nyc_output
COVERAGE_RES := $(ROOT)/coverage
#
# Tools and binaries
#
YARN := yarn
ESLINT := $(NODE_BIN)/eslint
JSCS := $(NODE_BIN)/jscs
MOCHA := $(NODE_BIN)/mocha
NYC := $(NODE_BIN)/nyc
COVERALLS := $(NODE_BIN)/coveralls
UNLEASH := $(NODE_BIN)/unleash
CONVENTIONAL_RECOMMENDED_BUMP := $(NODE_BIN)/conventional-recommended-bump
#
# Files
#
LCOV := $(ROOT)/coverage/lcov.info
PACKAGE_JSON := $(ROOT)/package.json
YARN_LOCK := $(ROOT)/yarn.lock
GITHOOKS := $(wildcard $(GITHOOKS_SRC)/*)
SHRINKWRAP = $(ROOT)/npm-shrinkwrap.json
ALL_FILES := $(shell find $(ROOT) \
-not \( -path $(NODE_MODULES) -prune \) \
-not \( -path $(COVERAGE) -prune \) \
-not \( -path $(COVERAGE_RES) -prune \) \
-name '*.js' -type f)
#
# Targets
#
.PHONY: help
help:
@perl -nle'print $& if m{^[a-zA-Z_-]+:.*?## .*$$}' $(MAKEFILE_LIST) \
| sort | awk 'BEGIN {FS = ":.*?## "}; \
{printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.PHONY: all
all: $(NODE_MODULES) lint codestyle coverage
$(YARN_LOCK): $(PACKAGE_JSON)
@$(YARN)
$(NODE_MODULES): $(PACKAGE_JSON)
@$(YARN)
@touch $(NODE_MODULES)
.PHONY: githooks
githooks: $(GITHOOKS) ## Install githooks
@$(foreach hook,\
$(GITHOOKS),\
ln -sf $(hook) $(GITHOOKS_DEST)/$(hook##*/);\
)
.PHONY: lint
lint: $(NODE_MODULES) ## Run lint checks
@$(ESLINT) $(ALL_FILES)
.PHONY: codestyle
codestyle: $(NODE_MODULES) ## Run style checks
@$(JSCS) $(ALL_FILES)
.PHONY: codestyle-fix
codestyle-fix: $(NODE_MODULES) ## Run and fix style check errors
@$(JSCS) $(ALL_FILES) --fix
.PHONY: prepush
prepush: $(NODE_MODULES) lint codestyle test ## Run all required tasks for a git push
.PHONY: test
test: $(NODE_MODULES) $(NYC) ## Run unit tests
@$(MOCHA) -R spec --full-trace
.PHONY: coverage
coverage: $(NODE_MODULES) $(NYC) ## Run unit tests with coverage reporting. Generates reports into /coverage.
@$(NYC) --reporter=html --reporter=text --reporter=lcov make test
.PHONY: report-coverage
report-coverage: $(NODE_MODULES) $(NYC) ## Run unit tests with coverage reporting. Generates reports into /coverage.
@$(NYC) report --reporter=text-lcov | $(COVERALLS)
.PHONY: clean
clean: ## Cleans unit test coverage files and node_modules.
@rm -rf $(NODE_MODULES) $(COVERAGE) $(COVERAGE_RES) $(YARN_LOCK) $(PACKAGE_LOCK)
.PHONY: release-dry
release-dry: $(NODE_MODULES) $(UNLEASH) ## Dry run of `release` target
@$(UNLEASH) -d --type=$(shell $(CONVENTIONAL_RECOMMENDED_BUMP) -p angular)
.PHONY: release
release: $(NODE_MODULES) $(UNLEASH) security ## Versions, tags, and updates changelog based on commit messages
@$(UNLEASH) --type=$(shell $(CONVENTIONAL_RECOMMENDED_BUMP) -p angular) --no-publish
@$(NPM) publish
.PHONY: security
security: $(NODE_MODULES) ## Check for dependency vulnerabilities.
@# remove lockfile, reinstall to get latest deps and regen lockfile
@rm $(YARN_LOCK) || true
@$(YARN)
@$(YARN) audit || EXIT_CODE=$$?; \
if [ $$EXIT_CODE -gt 15 ] ; then \
echo "'yarn audit' exited with error code $$EXIT_CODE, critical vulnerabilities found!"; \
exit 1; \
else \
echo "'yarn audit' exited with error code $$EXIT_CODE, no critical vulnerabilities found."; \
fi
#
## Debug -- print out a a variable via `make print-FOO`
#
print-% : ; @echo $* = $($*)