diff options
Diffstat (limited to 'scripts/theme-studio/Makefile')
| -rw-r--r-- | scripts/theme-studio/Makefile | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/scripts/theme-studio/Makefile b/scripts/theme-studio/Makefile index 6cf48f66c..7b8430182 100644 --- a/scripts/theme-studio/Makefile +++ b/scripts/theme-studio/Makefile @@ -12,8 +12,14 @@ HERE := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) # Optional palette seed for `gen` / `open`: make gen SEED=dupre.json SEED ?= +OUT ?= ../../themes +EMACS ?= emacs +EMACSCLIENT ?= emacsclient -.PHONY: help test check check-generated coverage gen open +.PHONY: help test check check-generated coverage gen open theme theme-load theme-reload face-coverage-dump face-coverage face-coverage-diff + +# Scratch path for the face-coverage Emacs data dump. +FACE_DUMP ?= /tmp/face-coverage-data.json .DEFAULT_GOAL := help @@ -25,6 +31,11 @@ help: @echo " make coverage - JS (node) + generate.py (uvx coverage) numbers" @echo " make gen [SEED=x.json] - Regenerate theme-studio.html (optionally from a seed)" @echo " make open [SEED=x.json] - Regenerate and open the page in Chrome" + @echo " make theme JSON=x.json - Convert a Theme Studio JSON export to OUT/<name>-theme.el" + @echo " make theme-load THEME=x - Disable all custom themes, then load THEME in current Emacs" + @echo " make theme-reload JSON=x - Convert JSON, then cleanly reload its theme in current Emacs" + @echo " make face-coverage - Regenerate face-coverage.org from the live Emacs daemon" + @echo " make face-coverage-diff - Show the coverage delta vs the committed face-coverage.org" test: @./run-tests.sh @@ -68,3 +79,43 @@ open: gen else \ echo "no Chromium-family browser found"; exit 1; \ fi + +theme: +ifndef JSON + @echo "Error: JSON parameter required" + @echo "Usage: make theme JSON=/path/to/theme.json [OUT=../../themes]" + @exit 1 +endif + @$(EMACS) --batch -l build-theme.el --eval '(princ (concat "wrote " (build-theme/convert-file "$(JSON)" "$(OUT)") "\n"))' + +theme-load: +ifndef THEME + @echo "Error: THEME parameter required" + @echo "Usage: make theme-load THEME=theme [OUT=../../themes]" + @exit 1 +endif + @$(EMACSCLIENT) -e "(progn (add-to-list 'custom-theme-load-path \"$(abspath $(OUT))\") (mapc #'disable-theme (copy-sequence custom-enabled-themes)) (load-theme '$(THEME) t) custom-enabled-themes)" + +theme-reload: +ifndef JSON + @echo "Error: JSON parameter required" + @echo "Usage: make theme-reload JSON=/path/to/theme.json [OUT=../../themes] [THEME=name]" + @exit 1 +endif + @$(MAKE) theme JSON='$(JSON)' OUT='$(OUT)' EMACS='$(EMACS)' + @theme_name='$(THEME)'; \ + if [ -z "$$theme_name" ]; then theme_name="$$(basename '$(JSON)' .json)"; fi; \ + $(MAKE) theme-load THEME="$$theme_name" OUT='$(OUT)' EMACSCLIENT='$(EMACSCLIENT)' + +# Dump face/group/package data from the running daemon (falls back to a batch +# Emacs that loads the full init when no daemon is reachable). +face-coverage-dump: + @$(EMACSCLIENT) -e '(progn (load "$(HERE)face-coverage-dump.el") (face-coverage-dump "$(FACE_DUMP)"))' >/dev/null 2>&1 \ + || $(EMACS) --batch -l "$$HOME/.emacs.d/init.el" -l "$(HERE)face-coverage-dump.el" \ + --eval '(face-coverage-dump "$(FACE_DUMP)")' + +face-coverage: face-coverage-dump + @python3 face_coverage.py --data "$(FACE_DUMP)" + +face-coverage-diff: face-coverage-dump + @python3 face_coverage.py --data "$(FACE_DUMP)" --compare face-coverage.org |
