# Copyright © 2026 Olaf Kolkman
# SPDX-License-Identifier: GPL-3.0-or-later

SHELL := /bin/sh

SOURCE_LOGO := LinkLog.svg
MAGICK ?= magick
WEB_LOGO := frontend/static/logo.svg
EXTENSION_LOGO := webextension/logo.svg
ICON_FILES := webextension/icon-16.png webextension/icon-32.png webextension/icon-48.png webextension/icon-96.png
GENERATED_LOGOS := $(WEB_LOGO) $(EXTENSION_LOGO) $(ICON_FILES)
EXTENSION_VERSION := $(shell sed -n 's/^[[:space:]]*"version":[[:space:]]*"\([^"]*\)".*/\1/p' webextension/manifest.json | head -n 1)
XPI_FILE := LinkLog-$(EXTENSION_VERSION).xpi
XPI_UNSIGNED_DIR := XPI/unsigned
XPI_SIGNED_DIR := XPI/signed
XPI_OUTPUT := $(XPI_UNSIGNED_DIR)/$(XPI_FILE)
EXTENSION_FILES := manifest.json logo.svg icon-16.png icon-32.png icon-48.png icon-96.png options.css options.html options.js popup.css popup.html popup.js

.PHONY: all logos xpi check-tools clean-generated

all: logos


logos: check-tools $(GENERATED_LOGOS)

xpi: logos
	@test -n "$(EXTENSION_VERSION)" || { echo "Error: extension version is missing from webextension/manifest.json" >&2; exit 1; }
	@mkdir -p $(XPI_UNSIGNED_DIR) $(XPI_SIGNED_DIR)
	@rm -f $(XPI_OUTPUT)
	@cd webextension && zip -q -9 "../$(XPI_OUTPUT)" $(EXTENSION_FILES)
	@python3 scripts/release/validate_xpi.py "$(XPI_OUTPUT)" webextension/manifest.json
	@echo "Created $(XPI_OUTPUT)"

check-tools:
	@command -v $(MAGICK) >/dev/null 2>&1 || { echo "Error: ImageMagick '$(MAGICK)' is required. Install ImageMagick and retry." >&2; exit 1; }

$(WEB_LOGO): $(SOURCE_LOGO)
	@mkdir -p $(@D)
	@cp $< $@

$(EXTENSION_LOGO): $(SOURCE_LOGO)
	@mkdir -p $(@D)
	@cp $< $@

webextension/icon-16.png: $(SOURCE_LOGO)
	@mkdir -p $(@D)
	@$(MAGICK) $< -resize 16x16 -gravity center -extent 16x16 $@

webextension/icon-32.png: $(SOURCE_LOGO)
	@mkdir -p $(@D)
	@$(MAGICK) $< -resize 32x32 -gravity center -extent 32x32 $@

webextension/icon-48.png: $(SOURCE_LOGO)
	@mkdir -p $(@D)
	@$(MAGICK) $< -resize 48x48 -gravity center -extent 48x48 $@

webextension/icon-96.png: $(SOURCE_LOGO)
	@mkdir -p $(@D)
	@$(MAGICK) $< -resize 96x96 -gravity center -extent 96x96 $@

clean-generated:
	@rm -f $(GENERATED_LOGOS)
