NAME := gnexus-creds-extension
VERSION := 0.1.1
# Per-file prerequisites: a directory prerequisite (plain "src") never goes
# stale when only a file inside it is edited.
SRC := manifest.json $(shell find src icons lib -type f)
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 test lib chrome firefox
all: chrome firefox
# Detection logic is tested without a browser: plain node over field-detect.js.
# (Not chained to all/zip targets; run `make test` explicitly.)
test:
node tools/test-field-detect.js
# 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 --parents $(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 --parents $(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 .