blob: c615552b9e0613291976b91b24482963222b88b2 (
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
  | 
# SPDX-License-Identifier: CC0-1.0
#
# Copyright (C) 2025 Woj. Kosior <koszko@koszko.org>
AWK = awk
INKSCAPE = inkscape
JQ = jq
SED = sed
ZIP = zip
default: simple-extension.zip
.PHONY: default
ICON_SIZES = 128 64 48 32 16
PNG_ICONS = $(addsuffix .png, $(addprefix icons/extension-, $(ICON_SIZES)))
$(PNG_ICONS): icons/extension.svg
	command -v $(INKSCAPE)
	for SIZE in $(ICON_SIZES); do \
		$(INKSCAPE) -o icons/extension-$$SIZE.png -w $$SIZE -h $$SIZE \
			icons/extension.svg; \
	done
CONTENT_SCRIPTS = $(addprefix content/, \
	anubis-bot-blocker.js \
	amso-shop.js \
	go-away-bot-blocker.js \
	google-drive-folders.js \
	janessa-garrow-home-site.js \
	stephanskirche-cathedral-site.js \
	vatican-news-main-page.js \
	vatican-news-site.js \
)
manifest.json: manifest.json.in get-code-block.awk $(CONTENT_SCRIPTS)
	command -v $(AWK)
	command -v $(JQ)
	FIRST=yes && \
	SCRIPT_SPECS="$$( \
		for SCRIPT in $(CONTENT_SCRIPTS); do \
			([ $$FIRST = yes ] || printf ,) && \
			FIRST=no && \
			JQ_CODE="$$( \
				$(AWK) --assign block_type=manifest-jq \
				-f get-code-block.awk $$SCRIPT \
			)" && \
			printf %s ' \
				{ \
					"run_at": "document_end", \
					"matches": [], \
					"all_frames": true, \
					"js": [ "'$$SCRIPT'" ] \
				} \
			' | \
			$(JQ) --indent 4 "$$JQ_CODE" | \
			$(SED) -z '\
				s/\([-\]\)/\\\1/g; \
				s/\n\|^/\\n        /g; \
				s/[\]n \+$$//; \
			'; \
		done && \
		printf '\\n    ' \
	)" && \
	$(SED) "s-[\$$]contentScriptSpecs[\$$]-$$SCRIPT_SPECS-g" $< > $@
background/background.js: background/background.js.in get-code-block.awk \
		$(CONTENT_SCRIPTS)
	command -v $(AWK)
	BG_CODE="$$( \
		$(AWK) --assign block_type=background-js \
			-f get-code-block.awk $(CONTENT_SCRIPTS) | \
		$(SED) 's/\([-\]\)/\\\1/g; s/.*/\0\\n/' | \
		tr --delete '\n' \
	)" && \
	$(SED) "s-[\$$]contentScriptsBgCode[\$$]-$$BG_CODE-g" $< > $@
simple-extension.zip: manifest.json background/background.js \
		$(CONTENT_SCRIPTS) $(PNG_ICONS)
	rm -rf $@ && zip --quiet $@ $^
clean:
	rm -rf simple-extension.zip manifest.json background/background.js
.PHONY: clean
  |