Files
lektor-recipes/Makefile
2023-02-27 01:06:01 +01:00

100 lines
2.6 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PROJDIR := src
TEXER := lualatex
LEKTOR := lektor --project $(PROJDIR)
BUILD_DIR := $$($(LEKTOR) project-info --output-path)
.PHONY: help dev dist clean plugins clean-all server build deploy pdf-clean pdf find-links
help:
@echo
@echo ' dev - Switch to development branch'
@echo ' dist - Switch to distribution branch'
@echo ' clean - Removes all temporary server-build files (not ./bin)'
@echo ' plugins - Clean and rebuild plugin cache'
@echo ' clean-all - Rebuild everything (not ./bin)'
@echo
@echo ' server - Start lektor server with live change updates'
@echo ' build - Build deployable website into ./bin'
@echo ' deploy - Custom rsync command to sync ./bin to remote server'
@echo ' pdf - Generate PDF from tex (after build)'
@echo
@echo ' find-links - Search for cross reference between recipes'
@echo
define switch_to
@echo Set source to $(1)
@rm $(PROJDIR)/content/recipes; ln -s $(1) $(PROJDIR)/content/recipes
endef
# Clean
dev:
$(call switch_to, '../../data/development/')
dist:
$(call switch_to, '../../data/distribution/')
clean:
@echo 'Cleaning output'
@rm -rf "$(BUILD_DIR)/.lektor/buildstate"*
@$(LEKTOR) clean --yes -v
plugins:
@echo 'Cleaning plugins'
@$(LEKTOR) plugins flush-cache
@$(LEKTOR) plugins list
clean-all: clean plugins
# Build
server:
@$(LEKTOR) server # -f ENABLE_PDF_EXPORT
server-v:
@$(LEKTOR) server -v
# --output-path is relative to project file
# --buildstate-path is relative to current working directory
build: dist
@$(LEKTOR) build --output-path ../bin --buildstate-path build-state -f ENABLE_PDF_EXPORT
@echo
@echo 'Checking dead links ...'
@python3 extras/find-dead-links.py
deploy:
@echo
@echo 'Warning: This will not(!) build but sync all files in ./bin'
@( read -p "Continue? [y/N]: " sure && case "$$sure" in [yY]) true;; *) false;; esac )
@echo # --dry-run
rsync -rclzv --exclude=.lektor --exclude=.DS_Store --delete bin/ vps:/srv/http/recipe-lekture
pdf:
@SECONDS=0; \
"$(PROJDIR)/_tex-to-pdf/build_manually.sh" \
&& echo "done. finished after $${SECONDS}s."
# Helper methods on all recipes
find-links:
@echo
@cd '$(PROJDIR)/content/recipes' && \
find */*.lr -exec grep --color=auto -i ".\.\./[^ ]*" -o {} + \
|| echo 'nothing found.'
@echo
find-yield:
@echo
@cd '$(PROJDIR)/content/recipes' && \
find */*.lr -exec grep "^yield: .*" -o {} \; \
| cut -d' ' -f 2- | tr -d '[0-9-.]' | sort -u \
|| echo 'nothing found.'
@echo
find-time:
@cd '$(PROJDIR)/content/recipes' && \
find */*.lr -exec grep "^time: .*" -o {} \; \
| cut -d' ' -f 2- | sort -n -u \
|| echo 'nothing found.'