# SPDX-License-Identifier: CC0-1.0 # # Copyright (C) 2025 Woj. Kosior 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