16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
-
+
-
-
+
+
-
+
-
+
-
+
-
+
+
+
+
|
series-sources := $(wildcard series/*.poly.pm)
series-html := $(patsubst %.poly.pm, %.html, $(series-sources))
# ~~~ Rules ~~
#
# The order of these dependencies is important. They will be processed left to right.
web: _article_htmls.mark $(articles-html) $(series-html) blog-pg1.html keyword-index.html
web: _article_htmls.mark $(articles-html) $(series-html) blog-pg1.html keyword-index.html web-extra/martin.css
web: ## Rebuild all web content (not PDFs)
# The file article_htmls.mark is a zero-byte file that serves only as a marker. If it is older than
# any of its dependencies (or missing) all of the articles will be rebuilt. Its dependencies are
# also on the Pollen cache watchlist (see pollen.rkt)
_article_htmls.mark: $(core-files) $(html-deps) template.html.p
raco pollen setup articles/
raco pollen render -p -t html articles/*.poly.pm
raco pollen setup series/
raco pollen render -p -t html series/*.poly.pm
rm -f template.html series/template.html
tidy -quiet -modify -indent --wrap 100 --tidy-mark no articles/*.html || true
tidy -quiet -modify -indent --wrap 100 --tidy-mark no series/*.html || true
# tidy -quiet -modify -indent --wrap 100 --wrap-attributes no --tidy-mark no articles/*.html || true
# tidy -quiet -modify -indent --wrap 100 --wrap-attributes no --tidy-mark no series/*.html || true
touch _article_htmls.mark
# If the rule for article_htmls.mark was triggered, all the article HTML files will already have
# been re-rendered. (That rule comes before this one in the list of dependencies for "all") But if
# not, any individual files that have been edited will get re-rendered.
$(articles-html): %.html: %.poly.pm
raco pollen render $@
tidy -quiet -modify -indent --wrap 100 --tidy-mark no $@ || true
# tidy -quiet -modify -indent --wrap 100 --wrap-attributes no --tidy-mark no $@ || true
# Note that if any article is part of a series, it will touch its series .poly.pm file during its
# render, triggering this rule for that series.
$(series-html): %.html: %.poly.pm
raco pollen render $@
tidy -quiet -modify -indent --wrap 100 --tidy-mark no $@ || true
# tidy -quiet -modify -indent --wrap 100 --wrap-attributes no --tidy-mark no $@ || true
# This target will also rebuild pg2, pg3, etc. as needed
blog-pg1.html: $(core-files) $(html-deps) $(articles-html) blog.rkt
rm -f blog*.html
racket -tm blog.rkt
tidy -quiet -modify -indent --wrap 100 --tidy-mark no blog*.html || true
# tidy -quiet -modify -indent --wrap 100 --wrap-attributes no --tidy-mark no blog*.html || true
keyword-index.html: $(core-files) $(html-deps) $(articles-html) keyword-index.rkt
racket -tm keyword-index.rkt
tidy -quiet -modify -indent --wrap 100 --tidy-mark no $@ || true
# tidy -quiet -modify -indent --wrap 100 --wrap-attributes no --tidy-mark no $@ || true
web-extra/martin.css: web-extra/martin.css.pp
raco pollen render $@
spritz: ## Clear Pollen and Scribble cache, and remove all HTML output
raco pollen reset
rm -f *.html articles/*.html series/*.html _article_htmls.mark
publish: check-env
publish: ## Sync all HTML and PDF stuff to the public web server (does not rebuild any files)
|