summaryrefslogtreecommitdiff
path: root/build-system/Makefile
blob: 01324ec6bf137c9676a5bd8af2c8ca945325d289 (plain)
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
# This Makefile has been placed in the public domain.

src = src
poname = taler-wallet-webex

tsc = node_modules/typescript/bin/tsc
pogen = node_modules/@gnu-taler/pogen/bin/pogen.js
typedoc = node_modules/typedoc/bin/typedoc
ava = node_modules/.bin/ava
nyc = node_modules/nyc/bin/nyc.js
git-archive-all = ./build-system/taler-build-scripts/archive-with-submodules/git_archive_all.py

include ./build-system/config.mk

.PHONY: dist
dist:
	$(git-archive-all) --include ./configure taler-wallet-$(shell git describe --tags --abbrev=0).tar.gz

# Create tarball with git hash prefix in name
.PHONY: dist-git
dist-git:
	$(git-archive-all) --include ./configure taler-wallet-$(shell git describe --tags).tar.gz

.PHONY: publish
publish:
	pnpm i -r --frozen-lockfile
	pnpm run compile
	pnpm publish -r --no-git-checks

# make documentation from docstrings
.PHONY: typedoc
typedoc:
	$(typedoc) --out dist/typedoc --readme README

.PHONY: clean
clean:
	pnpm run clean

.PHONY: submodules-update
submodules-update:
	git submodule update --recursive --remote

.PHONY: compile
compile:
	pnpm install -r --frozen-lockfile
	pnpm run compile

.PHONY: check
check:
	pnpm install -r --frozen-lockfile
	pnpm run compile
	pnpm run check

.PHONY: config-lib
config-lib:
	pnpm install --frozen-lockfile --filter @gnu-taler/taler-config-lib...
	cd ./packages/taler-config-lib/ && pnpm link -g

.PHONY: anastasis-webui
anastasis-webui:
	pnpm install --frozen-lockfile --filter @gnu-taler/anastasis-webui...
	pnpm run compile --filter @gnu-taler/anastasis-webui...

.PHONY: anastasis-webui-dev
anastasis-webui-dev:
	pnpm install --frozen-lockfile --filter @gnu-taler/anastasis-webui...
	pnpm run dev --filter @gnu-taler/anastasis-webui...

.PHONY: anastasis-webui-storybook
anastasis-webui-storybook:
	pnpm install --frozen-lockfile --filter @gnu-taler/anastasis-webui...
	pnpm run storybook --filter @gnu-taler/anastasis-webui...

.PHONY: webextension
webextension:
	pnpm install --frozen-lockfile --filter @gnu-taler/taler-wallet-webextension...
	pnpm run compile --filter @gnu-taler/taler-wallet-webextension...
	cd ./packages/taler-wallet-webextension/ && ./pack.sh

.PHONY: webextension-dev-view
webextension-dev-view:
	pnpm install -r --frozen-lockfile
	pnpm run compile
	pnpm run --filter @gnu-taler/taler-wallet-webextension storybook

.PHONY: i18n
i18n: compile
	# extract translatable strings
	find $(src) \( -name '*.ts' -or -name '*.tsx' \) ! -name '*.d.ts' \
	  | xargs node $(pogen) \
	  | msguniq \
	  | msgmerge src/i18n/poheader - \
	  > src/i18n/$(poname).pot
	# merge existing translations
	@for pofile in src/i18n/*.po; do \
	  echo merging $$pofile; \
	  msgmerge -o $$pofile $$pofile src/i18n/$(poname).pot; \
	done;
	# generate .ts file containing all translations
	cat src/i18n/strings-prelude > src/i18n/strings.ts
	@for pofile in src/i18n/*.po; do \
	  echo appending $$pofile; \
	  ./contrib/po2ts $$pofile >> src/i18n/strings.ts; \
	done;
	./node_modules/.bin/prettier --config .prettierrc --write src/i18n/strings.ts

# Some commands are only available when ./configure has been run

ifndef prefix
.PHONY: warn-noprefix install
warn-noprefix:
	@echo "no prefix configured, did you run ./configure?"
install: warn-noprefix
else
install_target = $(prefix)/lib/taler-wallet-cli
.PHONY: install
install:
	pnpm install --frozen-lockfile --filter @gnu-taler/taler-wallet-cli...
	install -d $(prefix)/bin
	install -d $(install_target)/bin
	install -d $(install_target)/node_modules/taler-wallet-cli
	install -d $(install_target)/node_modules/taler-wallet-cli/bin
	install -d $(install_target)/node_modules/taler-wallet-cli/dist
	install ./packages/taler-wallet-cli/dist/taler-wallet-cli.js $(install_target)/node_modules/taler-wallet-cli/dist/
	install ./packages/taler-wallet-cli/dist/taler-wallet-cli.js.map $(install_target)/node_modules/taler-wallet-cli/dist/
	install ./packages/taler-wallet-cli/bin/taler-wallet-cli $(install_target)/node_modules/taler-wallet-cli/bin/
	ln -sft $(prefix)/bin $(install_target)/node_modules/taler-wallet-cli/bin/taler-wallet-cli
endif

.PHONY: lint
lint:
	./node_modules/.bin/eslint --ext '.js,.ts,.tsx' 'src'