Newer
Older
gnexus-creds / extensions / extension / Makefile
NAME := gnexus-creds-extension
VERSION := 0.1.0
SRC := manifest.json src icons lib
BUILD := build
DIST := dist
# UI kit source: the version pinned by the frontend's package-lock.json.
KIT := ../../frontend/node_modules/gnexus-ui-kit/dist

.PHONY: all clean lib chrome firefox

all: chrome firefox

# Materialize lib/ from the frontend's gnexus-ui-kit install. Runs manually
# (fresh clones need it before build); it is not chained to `all:` because
# a newer kit rebuilds zips with different content than the released ones.
lib:
	@test -d "$(KIT)" || { echo "gnexus-ui-kit not installed; run (cd ../../frontend && npm install) first"; exit 1; }
	rm -rf lib
	mkdir -p lib
	cp $(KIT)/css/kit.css lib/gnexus-ui-kit.css
	cp $(KIT)/js/gnexus-ui-kit.js lib/
	cp -r $(KIT)/assets lib/assets
	@echo "lib materialized (kit may be newer than the released zips were built with)"

clean:
	rm -rf $(BUILD) $(DIST)

$(BUILD)/chrome: $(SRC)
	mkdir -p $@
	cp -r $(SRC) $@/
	node -e "const fs=require('fs'); const m=JSON.parse(fs.readFileSync('$@/manifest.json')); delete m.browser_specific_settings; fs.writeFileSync('$@/manifest.json', JSON.stringify(m,null,2));"
	sed -i 's|url("../assets/|url("assets/|g' $@/lib/gnexus-ui-kit.css
	sed -i "s|url('/assets/|url('assets/|g" $@/lib/gnexus-ui-kit.css

$(BUILD)/firefox: $(SRC)
	mkdir -p $@
	cp -r $(SRC) $@/
	# Firefox MV3 has no background.service_worker / type:"module":
	# bundle api.js + background.js into one classic script and use event-page scripts.
	node tools/bundle-background.js $@
	node -e "const fs=require('fs'); const p='$@/manifest.json'; const m=JSON.parse(fs.readFileSync(p)); m.background={scripts:['src/background.js']}; fs.writeFileSync(p, JSON.stringify(m,null,2));"
	sed -i 's|url("../assets/|url("assets/|g' $@/lib/gnexus-ui-kit.css
	sed -i "s|url('/assets/|url('assets/|g" $@/lib/gnexus-ui-kit.css

chrome: $(BUILD)/chrome
	mkdir -p $(DIST)
	cd $(BUILD)/chrome && zip -r ../../$(DIST)/$(NAME)-chrome-$(VERSION).zip .

firefox: $(BUILD)/firefox
	mkdir -p $(DIST)
	cd $(BUILD)/firefox && zip -r ../../$(DIST)/$(NAME)-firefox-$(VERSION).zip .