From a8ad6f0a8b7906f118c7cf056ea8f95fd74c3c51 Mon Sep 17 00:00:00 2001 From: cedounet <134267244+cedounet@users.noreply.github.com> Date: Fri, 4 Aug 2023 14:57:08 +0100 Subject: [PATCH] Use standard practices for website build (#161) - Declare your dependencies - Do not rebuild unless dependencies changed - Cleanup after yourself - Document your targets - COMMANDS in upper case and variables/rules in lowercase --- book/makefile | 46 ++++++++++++++++++++++++++++++++++++---------- website/makefile | 5 ----- 2 files changed, 36 insertions(+), 15 deletions(-) delete mode 100644 website/makefile diff --git a/book/makefile b/book/makefile index a304047..0bb2e63 100644 --- a/book/makefile +++ b/book/makefile @@ -1,16 +1,19 @@ # Macros for commands LATEX := latexmk -cd -pdflua -lualatex="lualatex -interaction=nonstopmode" -use-make EBOOK := tex4ebook --lua -d epub -c tex4ebook.cfg +WEBSITE := make4ht --lua -c website.cfg -a debug -uf html5+tidy+common_domfilters+dvisvgm_hashes CLEAN := latexmk -cd -lualatex -c -use-make EBOOK_CONVERT := kindlegen CHECK_1 := lacheck CHECK_2 := chktex -WEBSITE_DIR := static_website_html ifdef DEBUG EBOOK += -a debug +WEBSITE += -a debug endif +website_dir := static_website_html + # List all files that are dependencies chapters = baking basics bread-types flour-types history intro\ non-wheat-sourdough sourdough-starter storing-bread troubleshooting\ @@ -30,6 +33,12 @@ images += $(foreach directory, $(chapters), $(wildcard $(directory)/*.png)) src_all := $(src_tex) $(src_figures) $(src_tables) tex4ebook.cfg book.mk4 $(images) +website_src := $(src_all) website.cfg + +website_assets := $(wildcard ../website/assets/*) +ruby_src := ../website/modify_build.rb $(website_assets) +ruby_src += ../website/Gemfile ../website/Gemfile.lock + tgt_figures := $(patsubst %.tex, %.png,$(src_figures)) # Default rules for pdf and ebooks, getting overwritten when built in a @@ -81,9 +90,11 @@ help: @echo "check: runs static analysis checker on LaTeX source to spot" @echo " programming or typographic mistakes" @echo "" - @echo "clean: delete all intermediate files keep targets (pdf/ebook)" - @echo "mrproper: delete all generated files intermediate and pdf/ebooks" - @echo "clean_figures: delete intermediate TikZ files" + @echo "clean: delete all intermediate files keep targets (pdf/ebooks/website)" + @echo "mrproper: delete all generated files intermediate and pdf/ebooks/website" + @echo " clean_figures: delete intermediate TikZ files" + @echo " clean_website_build: delete intermediate website files" + @echo " clean_ebook_build: delete intermediate ebook files" @echo "" @echo "build_ebook: builds only the ebook serif and accessible version" @echo "build_pdf: builds both serif and accessible pdf" @@ -99,6 +110,9 @@ help: @echo "release_serif: build serif only version of pdf and ebooks" @echo "release_sans_serif: build sans-serif/accessible version of pdf and ebooks" @echo "" + @echo "website: build the static website from LaTeX sources and post-process it" + @echo "html: build the static website from LaTeX sources _without_ post-processing" + @echo "" @echo "Debug targets:" @echo "" @echo "show_tools_version: Show version of tools used on the build machine" @@ -175,8 +189,14 @@ clean_ebook_build: -rm content.opf -rm book*x.svg +.PHONY: clean_website_build +clean_website_build: clean_ebook_build + -rm book-*.svg + -rm book.dlog + -rm $(subst $(website_dir)/,, $(wildcard $(website_dir)/*.html)) + .PHONY: clean -clean: clean_ebook_build clean_figures +clean: clean_ebook_build clean_figures clean_website_build $(CLEAN) -output-directory=book_serif book.tex $(CLEAN) -output-directory=book_sans_serif book_sans_serif.tex -rm book*/*.bbl @@ -199,7 +219,7 @@ mrproper: clean rm -rf book_sans_serif/ rm -rf book-epub/ rm -rf book_sans_serif-epub/ - rm -rf static_website_html/ + rm -rf $(website_dir) .PHONY: bake bake: release_serif release_sans_serif @@ -222,11 +242,17 @@ release_sans_serif: build_sans_serif_pdf build_sans_serif_ebook | make_release_d cp epub/book_sans_serif.epub release/TheBreadCode-The-Sourdough-Framework-sans-serif.epub cp epub/book_sans_serif.azw3 release/TheBreadCode-The-Sourdough-Framework-sans-serif.azw3 +# Website stuff +$(website_dir)/book.html: $(website_src) + $(WEBSITE) -d $(website_dir) book.tex + +.PHONY: html +html: $(website_dir)/book.html + cp $< $(website_dir)/index.html + .PHONY: website -website: - rm -rf $(WEBSITE_DIR) - make4ht --lua -c website.cfg -a debug -uf html5+tidy+common_domfilters+dvisvgm_hashes -d $(WEBSITE_DIR) book.tex - cp $(WEBSITE_DIR)/book.html $(WEBSITE_DIR)/index.html +website: html $(ruby_src) + cd ../website && bundle install && ruby modify_build.rb # Debug Stuff from now on .PHONY: show_tools_version diff --git a/website/makefile b/website/makefile deleted file mode 100644 index 83f95f6..0000000 --- a/website/makefile +++ /dev/null @@ -1,5 +0,0 @@ -.PHONY: website -website: - cd ../book && make mrproper && make website - bundle install - ruby modify_build.rb