|
1 |
| -# Please update /.templates/default.mk and sync: |
2 |
| -# |
3 |
| -# source scripts/functions.sh && rsync_files |
4 |
| -# |
5 | 1 | SHELL := /usr/bin/env bash
|
6 |
| -ALPINE = $(shell which apk 2> /dev/null) |
7 |
| -LIBNAME = $(shell basename $$(pwd)) |
8 |
| -LANGUAGES ?= $(wildcard */) |
9 |
| - |
10 | 2 | # https://stackoverflow.com/questions/2483182/recursive-wildcards-in-gnu-make
|
11 | 3 | rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
|
| 4 | +TYPESCRIPT_SOURCE_FILES = $(sort $(call rwildcard,src test,*.ts *.tsx)) |
| 5 | +PRIVATE = $(shell node -e "console.log(require('./package.json').private)") |
| 6 | +IS_TESTDATA = $(findstring -testdata,${CURDIR}) |
| 7 | +NPM_MODULE = $(shell cat package.json | jq .name --raw-output) |
12 | 8 |
|
13 |
| -default: $(patsubst %,default-%,$(LANGUAGES)) |
| 9 | +default: .tested |
14 | 10 | .PHONY: default
|
15 | 11 |
|
16 |
| -default-%: % |
17 |
| - if [[ -d $< ]]; then cd $< && make default; fi |
18 |
| -.PHONY: default-% |
| 12 | +../../node_modules ../../package-lock.json: package.json |
| 13 | + cd ../.. && npm install |
19 | 14 |
|
20 |
| -# Need to declare these phonies to avoid errors for packages without a particular language |
21 |
| -.PHONY: c dotnet go java javascript objective-c perl python ruby |
| 15 | +.codegen: |
| 16 | + touch $@ |
22 | 17 |
|
23 |
| -update-dependencies: $(patsubst %,update-dependencies-%,$(LANGUAGES)) |
24 |
| -.PHONY: update-dependencies |
| 18 | +.tested: .tested-npm .built |
| 19 | + |
| 20 | +.built: $(TYPESCRIPT_SOURCE_FILES) ../../node_modules ../../package-lock.json .codegen |
| 21 | + pushd ../.. && \ |
| 22 | + npm run build && \ |
| 23 | + popd && \ |
| 24 | + touch $@ |
| 25 | + |
| 26 | +.tested-npm: $(TYPESCRIPT_SOURCE_FILES) ../../node_modules ../../package-lock.json .codegen |
| 27 | + npm run test |
| 28 | + touch $@ |
25 | 29 |
|
26 |
| -update-dependencies-%: % |
27 |
| - if [[ -d $< ]]; then cd $< && make update-dependencies; fi |
28 |
| -.PHONY: update-dependencies-% |
| 30 | +pre-release: clean update-version update-dependencies default |
| 31 | +.PHONY: pre-release |
| 32 | + |
| 33 | +update-dependencies: ../../node_modules ../../package-lock.json |
| 34 | + ../../node_modules/.bin/npm-check-updates --upgrade --reject hast-util-sanitize,@types/node,react-markdown,rehype-raw,rehype-sanitize,remark-gfm |
| 35 | +.PHONY: update-dependencies |
29 | 36 |
|
30 |
| -update-changelog: |
| 37 | +update-version: |
| 38 | +ifeq ($(IS_TESTDATA),-testdata) |
| 39 | + # no-op |
| 40 | +else |
31 | 41 | ifdef NEW_VERSION
|
32 |
| - cat CHANGELOG.md | ../scripts/update_changelog.sh $(NEW_VERSION) > CHANGELOG.md.tmp |
33 |
| - mv CHANGELOG.md.tmp CHANGELOG.md |
| 42 | + npm --no-git-tag-version --allow-same-version version "$(NEW_VERSION)" |
| 43 | + # Update all npm packages that depend on us |
| 44 | + pushd ../.. && \ |
| 45 | + ./scripts/npm-each update_npm_dependency_if_exists package.json "$(NPM_MODULE)" "$(NEW_VERSION)" |
34 | 46 | else
|
35 | 47 | @echo -e "\033[0;31mNEW_VERSION is not defined. Can't update version :-(\033[0m"
|
36 | 48 | exit 1
|
37 | 49 | endif
|
38 |
| -.PHONY: update-changelog |
39 |
| - |
40 |
| -pre-release: update-changelog $(patsubst %,pre-release-%,$(LANGUAGES)) |
41 |
| -.PHONY: pre-release |
42 |
| - |
43 |
| -pre-release-%: % |
44 |
| - if [[ -d $< ]]; then cd $< && make pre-release; fi |
45 |
| -.PHONY: pre-release-% |
46 |
| - |
47 |
| -release: publish |
48 |
| -.PHONY: release |
| 50 | +endif |
| 51 | +.PHONY: update-version |
49 | 52 |
|
50 |
| -publish: create-and-push-release-tag $(patsubst %,publish-%,$(LANGUAGES)) |
| 53 | +publish: .codegen |
| 54 | +ifeq ($(IS_TESTDATA),-testdata) |
| 55 | + # no-op |
| 56 | +else |
| 57 | +ifneq (true,$(PRIVATE)) |
| 58 | + npm publish --access public |
| 59 | +else |
| 60 | + @echo "Not publishing private npm module" |
| 61 | +endif |
| 62 | +endif |
51 | 63 | .PHONY: publish
|
52 | 64 |
|
53 |
| -publish-%: % |
54 |
| - if [[ -d $< ]]; then cd $< && make publish; fi |
55 |
| -.PHONY: publish-% |
56 |
| - |
57 |
| -create-and-push-release-tag: |
58 |
| - [ -f '/home/cukebot/configure' ] && /home/cukebot/configure |
59 |
| - git commit --gpg-sign --all --message "Release $(LIBNAME) v$(NEW_VERSION)" |
60 |
| - git tag --sign "$(LIBNAME)/v$(NEW_VERSION)" -m "Release $(LIBNAME) v$(NEW_VERSION)" |
61 |
| - git push --tags |
62 |
| -.PHONY: create-and-push-release-tag |
63 |
| - |
64 |
| -post-release: $(patsubst %,post-release-%,$(LANGUAGES)) |
| 65 | +post-release: |
65 | 66 | .PHONY: post-release
|
66 | 67 |
|
67 |
| -post-release: commit-and-push-post-release |
| 68 | +clean: clean-javascript |
| 69 | +.PHONY: clean |
68 | 70 |
|
69 |
| -post-release-%: % |
70 |
| - if [[ -d $< ]]; then cd $< && make post-release; fi |
71 |
| -.PHONY: post-release-% |
| 71 | +clean-javascript: |
| 72 | + rm -rf .deps .codegen .tested* coverage dist acceptance |
| 73 | +.PHONY: clean-javascript |
72 | 74 |
|
73 |
| -commit-and-push-post-release: |
74 |
| -ifdef NEW_VERSION |
75 |
| - git push --tags |
76 |
| - git commit --gpg-sign --all --message "Post release $(LIBNAME) v$(NEW_VERSION)" 2> /dev/null || true |
77 |
| - git push |
78 |
| -else |
79 |
| - @echo -e "\033[0;31mNEW_VERSION is not defined.\033[0m" |
80 |
| - exit 1 |
81 |
| -endif |
82 |
| -.PHONY: commit-and-push-post-release |
| 75 | +clobber: clean |
| 76 | + rm -rf node_modules ../../node_modules |
| 77 | +.PHONY: clobber |
83 | 78 |
|
84 |
| -clean: $(patsubst %,clean-%,$(LANGUAGES)) |
85 |
| -.PHONY: clean |
| 79 | +### COMMON stuff for all platforms |
| 80 | + |
| 81 | +BERP_VERSION = 1.3.0 |
| 82 | +BERP_GRAMMAR = gherkin.berp |
86 | 83 |
|
87 |
| -clean-%: % |
88 |
| - if [[ -d $< ]]; then cd $< && make clean; fi |
89 |
| -.PHONY: clean-% |
| 84 | +define berp-generate-parser = |
| 85 | +-! dotnet tool list --tool-path /usr/bin | grep "berp\s*$(BERP_VERSION)" && dotnet tool update Berp --version $(BERP_VERSION) --tool-path /usr/bin |
| 86 | +berp -g $(BERP_GRAMMAR) -t $< -o $@ --noBOM |
| 87 | +endef |
0 commit comments