-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.microproject
141 lines (108 loc) · 2.86 KB
/
Makefile.microproject
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
DEST_LIB = dist/parsegraph-$(DIST_NAME).lib.js
PROD_LIB = dist-prod/parsegraph-$(DIST_NAME).lib.js
CLEAN_FILES = \
dist \
dist-types \
dist-prod \
parsegraph-$(DIST_NAME)-dev.tgz \
parsegraph-$(DIST_NAME)-prod.tgz
CONFIG_FILES = \
Makefile \
Makefile.microproject \
yarn.lock \
package.json \
tsconfig.browser.json \
tsconfig.prod.json \
.babelrc \
webpack.common.js \
webpack.prod.js \
webpack.config.js
all: build lint test coverage doc
show-runs:
xdg-open https://github.com/parsegraph/$(DIST_NAME)/actions
.PHONY: show-runs
show-npm:
xdg-open https://npmjs.com/parsegraph-$(DIST_NAME)
.PHONY: show-npm
build: $(DEST_LIB)
.PHONY: build
autobuild:
npx webpack --watch --config webpack.config.js
.PHONY: autobuild
install-deps:
./install-deps.sh
.PHONY: install-deps
build-prod: $(PROD_LIB)
.PHONY: build-prod
demo:
SITE_PORT=$(DEMO_PORT) cd demo && yarn build && yarn start
.PHONY: demo
tmux:
tmuxify restart $(DEMO_PORT)
.PHONY: tmux
stop-tmux:
tmuxify stop
.PHONY: stop-tmux
RUN_TEST=npx jest --env=jsdom --no-cache
check:
$(RUN_TEST)
.PHONY: check
test: check
.PHONY: test
autotest:
$(RUN_TEST) --watch
.PHONY: autotest
coverage:
$(RUN_TEST) --coverage --coverageDirectory=dist/coverage --coveragePathIgnorePatterns=demo
.PHONY: coverage
prettier:
npx prettier --write src test demo
.PHONY: prettier
lint:
npx eslint --fix $(SCRIPT_FILES)
.PHONY: lint
doc:
npx typedoc --tsconfig tsconfig.browser.json src/index.ts --out ./dist/docs
.PHONY: doc
build-container:
podman build . -t parsegraph-$(DIST_NAME)
.PHONY: build-container
run-container: build-container stop-container
podman run -e SITE_ROOT=$(DEMO_ROOT) -w /usr/src/ --name parsegraph-$(DIST_NAME) -it -p$(DEMO_PORT):3000 localhost/parsegraph-$(DIST_NAME):latest make demo
.PHONY: run-container
stop-container:
podman stop parsegraph-$(DIST_NAME); podman rm parsegraph-$(DIST_NAME); true
.PHONY: stop-container
tar: parsegraph-$(DIST_NAME)-dev.tgz
.PHONY: tar
tar-prod: parsegraph-$(DIST_NAME)-prod.tgz
.PHONY: tar
wait:
./wait.sh $(CONFIG_FILES) $(SCRIPT_FILES) $(EXTRA_SCRIPTS)
.PHONY: wait
clean:
rm -rf $(CLEAN_FILES)
.PHONY: clean
EXTRA_FILES = \
LICENSE \
README.md \
package.json
$(DEST_LIB): $(EXTRA_FILES) $(SCRIPT_FILES) $(EXTRA_SCRIPTS)
npx webpack --config webpack.config.js
$(PROD_LIB): $(EXTRA_FILES) $(SCRIPT_FILES) $(EXTRA_SCRIPTS)
NODE_ENV=production npx webpack --config webpack.prod.js
BUILD=parsegraph-$(DIST_NAME)
parsegraph-$(DIST_NAME)-dev.tgz: $(DEST_LIB)
mkdir $(BUILD)
cp -r -t $(BUILD) $(EXTRA_FILES) dist/
rm -rf $(BUILD)/dist/coverage
rm -rf $(BUILD)/dist/docs
sed -E -i 's/("version"\s*:\s*")([0-9.]+)("\s*,\s*)$$/\1\2-dev\3/g' $(BUILD)/package.json
tar cvzf $@ $(BUILD)/
rm -rf $(BUILD)
parsegraph-$(DIST_NAME)-prod.tgz: $(PROD_LIB)
mkdir $(BUILD)
cp -r -t $(BUILD) $(EXTRA_FILES)
cp -r dist-prod/ $(BUILD)/dist
tar cvzf $@ $(BUILD)/
rm -rf $(BUILD)