From cfa66c5ec0fe8d948df16bf3ce17291e9913b2a8 Mon Sep 17 00:00:00 2001 From: Volpeon Date: Mon, 20 Jun 2022 18:32:44 +0200 Subject: Add hash to more assets --- Makefile | 35 +++--- Makefile copy | 215 ----------------------------------- filters/icons.lua | 2 +- templates/base.html | 8 +- templates/layouts/exhibit.html | 6 +- templates/layouts/page.html | 8 +- templates/partials/gallery_card.html | 4 +- templates/partials/grid_card.html | 4 +- templates/partials/list_card.html | 4 +- 9 files changed, 39 insertions(+), 247 deletions(-) delete mode 100644 Makefile copy diff --git a/Makefile b/Makefile index d8dc0db..ede169e 100644 --- a/Makefile +++ b/Makefile @@ -21,19 +21,20 @@ FEED_FILES := $(patsubst content/%.md,out/%.xml,$(FEED_SRC)) FONT_FILES := $(patsubst assets/fonts/%.ttf,out/%.woff2,$(wildcard assets/fonts/*.ttf)) CSS_FILES := $(patsubst assets/css/%.scss,out/%.css,$(wildcard assets/css/style.scss)) STATIC_FILES := $(patsubst content/%,out/%,$(shell find content -type f ! -name "*.md")) +ASSET_FILES := $(FONT_FILES) $(CSS_FILES) out/icons.svg $(patsubst content/%,out/%,$(shell find content -maxdepth 1 -type f ! -name "*.md")) # # TARGETS # -all: content_meta content_files feed_files static_files font_files css_files icons +all: content_meta content_files feed_files font_files css_files static_files content_meta: $(CONTENT_META) content_files: $(CONTENT_FILES) feed_files: $(FEED_FILES) -static_files: $(STATIC_FILES) font_files: $(FONT_FILES) css_files: $(CSS_FILES) +static_files: $(STATIC_FILES) # # RULES @@ -65,6 +66,7 @@ subpages = $(patsubst content/%.md,.cache/meta/%.json, \ --metadata-file "$@.pages" \ $(PANDOC_FILTERS) \ -o "$@.meta" "$<" + rm "$@.pages" pandoc \ -f markdown-citations-implicit_figures \ -t html5 \ @@ -77,11 +79,13 @@ subpages = $(patsubst content/%.md,.cache/meta/%.json, \ $(PANDOC_FILTERS) \ -o "$@.content" "$<" jq '. + { content: $$content }' --rawfile content "$@.content" "$@.meta" > "$@" - rm "$@.pages" rm "$@.meta" rm "$@.content" -out/%.html: content/%.md .cache/meta/%.json $(CONTENT_TEMPLATES_SRC) metadata/*.yaml filters/*.lua scripts/metadata_filter.lua out/style.css | out +.cache/assets.json: $(ASSET_FILES) | .cache + sha256sum $^ | sed -r 's/([0-9a-f]+) +out\/(.*)/{ "\2": "\/\2?\1" }/' | jq '{ assets: [inputs] | add | with_entries( .key |= gsub( "\\."; "_") ) }' > "$@" + +out/%.html: content/%.md .cache/meta/%.json .cache/assets.json $(CONTENT_TEMPLATES_SRC) metadata/*.yaml filters/*.lua scripts/metadata_filter.lua | out $(info [MARK] $< -> $@) mkdir -p $(@D) @@ -93,9 +97,9 @@ out/%.html: content/%.md .cache/meta/%.json $(CONTENT_TEMPLATES_SRC) metadata/*. --template templates/base.html \ --lua-filter scripts/metadata_filter.lua \ $(GLOBAL_METADATA) \ + --metadata-file .cache/assets.json \ --metadata-file "$(filter .cache/meta/%.json,$^)" \ --metadata file_out="$@" \ - --metadata style_hash="$(shell sha256sum out/style.css | cut -d ' ' -f 1)" \ $(PANDOC_FILTERS) \ -o "$@" "$<" @@ -140,14 +144,8 @@ out/%.css: assets/css/%.scss $(CSS_SRC) | out sass --load-path=node_modules "$<" | ./node_modules/.bin/postcss --use autoprefixer --no-map -o "$@" -out/%: content/% | out - $(info [COPY] $< -> $@) - - mkdir -p $(@D) - cp "$<" "$@" - -icons: | out - $(info [ICON] out/icons.svg) +out/icons.svg: | out + $(info [ICON] $@) node ./node_modules/iro-icons/scripts/create_sprite.js \ asterisk \ @@ -168,7 +166,16 @@ icons: | out x \ chevron-left \ chevron-right \ - "out/icons.svg" + "$@" + +out/%: content/% | out + $(info [COPY] $< -> $@) + + mkdir -p $(@D) + cp "$<" "$@" + +.cache/hash: | .cache + mkdir -p .cache/hash .cache/meta: | .cache mkdir -p .cache/meta diff --git a/Makefile copy b/Makefile copy deleted file mode 100644 index 52d4dd8..0000000 --- a/Makefile copy +++ /dev/null @@ -1,215 +0,0 @@ -export DEPLOY_TARGET = vulpes@94.130.78.123:/srv/http/volpeon.ink/ - --include Env.mk - -# -# FILE GROUPS -# - -PANDOC_FILTERS := $(patsubst %,--lua-filter %,$(wildcard filters/*.lua)) -GLOBAL_METADATA := $(patsubst %,--metadata-file %,$(wildcard metadata/*.yaml)) - -CONTENT_SRC := $(shell find content -type f -name "*.md") -FEED_SRC := $(shell grep -l "^feed: *true$$" $(CONTENT_SRC)) -CONTENT_TEMPLATES_SRC := $(shell find templates -type f -name "*.html") -FEED_TEMPLATES_SRC := $(shell find templates -type f -name "*.xml") -CSS_SRC := $(shell find assets/css -type f -name "*.scss") - -CONTENT_META := $(patsubst content/%.md,.cache/meta/%.json,$(CONTENT_SRC)) -CONTENT_FILES := $(patsubst content/%.md,out/%.html,$(CONTENT_SRC)) -FEED_FILES := $(patsubst content/%.md,out/%.xml,$(FEED_SRC)) -FONT_FILES := $(patsubst assets/fonts/%.ttf,out/%.woff2,$(wildcard assets/fonts/*.ttf)) -CSS_FILES := $(patsubst assets/css/%.scss,out/%.css,$(wildcard assets/css/style.scss)) -STATIC_FILES := $(patsubst content/%,out/%,$(shell find content -type f ! -name "*.md")) -STATIC_HASHED_FILES := $(filter out/%.css out/%.js out/%.svg out/%.woff2,$(STATIC_FILES)) - -# -# TARGETS -# - -all: content_meta content_files feed_files font_files css_files static_files icons - -content_meta: $(CONTENT_META) -content_files: $(CONTENT_FILES) -feed_files: $(FEED_FILES) -font_files: $(FONT_FILES) -css_files: $(CSS_FILES) -static_files: $(STATIC_FILES) - -# -# RULES -# - -.SECONDEXPANSION: - -namespace = $(patsubst %/index,%,$(patsubst %.json,%,$(patsubst $(2)%,%,$(1)))) - -subpages = $(patsubst content/%.md,.cache/meta/%.json, \ - $(shell test -d $(patsubst .cache/meta%,content%,$(1)) && find $(patsubst .cache/meta%,content%,$(1)) -maxdepth 1 -type f -name "*.md" ! -name "index.md") \ - $(shell test -d $(patsubst .cache/meta%,content%,$(1)) && find $(patsubst .cache/meta%,content%,$(1)) -mindepth 2 -maxdepth 2 -type f -name "index.md")) - -.cache/meta/%.json: content/%.md $$(call subpages,$$(call namespace,$$@,)) filters/*.lua scripts/subpages.lua scripts/subpages.jq scripts/metadata_tpl.json | .cache/meta - $(info [META] $< -> $@) - - mkdir -p $(@D) - $(eval PAGES_FILES = $(filter .cache/meta/%.json,$^)) - $(eval NAMESPACE = $(call namespace,$@,.cache/meta)) - $(if $(PAGES_FILES),jq -s --arg namespace "$(NAMESPACE)" -f scripts/subpages.jq $(PAGES_FILES) > "$@.pages",echo "{}" > "$@.pages") - pandoc \ - -f markdown-citations-implicit_figures \ - -t html5 \ - --wrap preserve \ - --no-highlight \ - --template scripts/metadata_tpl.json \ - --metadata namespace="$(NAMESPACE)" \ - --metadata file_out="$(patsubst .cache/meta/%.json,out/%.html,$@)" \ - --metadata-file "$@.pages" \ - $(PANDOC_FILTERS) \ - -o "$@.meta" "$<" - pandoc \ - -f markdown-citations-implicit_figures \ - -t html5 \ - --wrap preserve \ - --lua-filter scripts/metadata_filter.lua \ - --lua-filter scripts/subpages.lua \ - $(GLOBAL_METADATA) \ - --metadata-file "$@.meta" \ - --metadata file_out="$@" \ - $(PANDOC_FILTERS) \ - -o "$@.content" "$<" - jq '. + { content: $$content }' --rawfile content "$@.content" "$@.meta" > "$@" - rm "$@.pages" - rm "$@.meta" - rm "$@.content" - -.cache/hash.json: $(STATIC_HASHED_FILES) | .cache - echo "$^" - shell sha256sum "$^" | sed -r 's/([0-9a-f]+) +.*\/(.*)/"\2": "\1"/' - -out/%.html: content/%.md .cache/meta/%.json .cache/hash.json $(CONTENT_TEMPLATES_SRC) metadata/*.yaml filters/*.lua scripts/metadata_filter.lua out/style.css | out - $(info [MARK] $< -> $@) - - mkdir -p $(@D) - pandoc \ - -f markdown-citations-implicit_figures \ - -t html5 \ - --wrap preserve \ - --no-highlight \ - --template templates/base.html \ - --lua-filter scripts/metadata_filter.lua \ - $(GLOBAL_METADATA) \ - --metadata-file ".cache/hash.json" \ - --metadata-file "$(filter .cache/meta/%.json,$^)" \ - --metadata file_out="$@" \ - $(PANDOC_FILTERS) \ - -o "$@" "$<" - -out/%.xml: content/%.md .cache/meta/%.json $(FEED_TEMPLATES_SRC) metadata/*.yaml filters/*.lua scripts/metadata_filter.lua | out - $(info [FEED] $< -> $@) - - mkdir -p $(@D) - pandoc \ - -f markdown-citations-implicit_figures \ - -t html5 \ - --wrap preserve \ - --no-highlight \ - --template templates/feed.xml \ - --lua-filter scripts/metadata_filter.lua \ - $(GLOBAL_METADATA) \ - --metadata-file "$(filter .cache/meta/%.json,$^)" \ - --metadata file_out="$@" \ - $(PANDOC_FILTERS) \ - -o "$@" "$<" - -out/%/thumbnail.png: content/%/thumbnail.png | out - $(info [THMB] $< -> $@) - - convert -thumbnail 550x280^ -gravity center -extent 550x280 "$<" png:- | pngquant -o "$@" - - -out/%/thumbnail.jpg: content/%/thumbnail.jpg | out - $(info [THMB] $< -> $@) - - convert -thumbnail 550x280^ -gravity center -extent 550x280 "$<" ppm:- | cjpeg -quality 80 > "$@" - -out/%.woff2: assets/fonts/%.ttf assets/fonts/glyphs.txt | out - $(info [FONT] $< -> $@) - - pyftsubset "$<" \ - --text-file="assets/fonts/glyphs.txt" \ - --layout-features+=ss09,dlig \ - --flavor="woff2" \ - --output-file="$@" - -out/%.css: assets/css/%.scss $(CSS_SRC) | out - $(info [SCSS] $< -> $@) - - sass --load-path=node_modules "$<" | ./node_modules/.bin/postcss --use autoprefixer --no-map -o "$@" - -out/%: content/% | out - $(info [COPY] $< -> $@) - - mkdir -p $(@D) - cp "$<" "$@" - -icons: | out - $(info [ICON] out/icons.svg) - - node ./node_modules/iro-icons/scripts/create_sprite.js \ - asterisk \ - arrow-left \ - arrow-right \ - arrow-up-right \ - shuffle \ - envelope \ - hash \ - messages \ - parallelogram \ - globe \ - image \ - graph \ - git-branch \ - smile \ - link \ - x \ - chevron-left \ - chevron-right \ - "out/icons.svg" - -.cache/hash: | .cache - mkdir -p .cache/hash - -.cache/meta: | .cache - mkdir -p .cache/meta - -.cache: - mkdir -p .cache - -out: - mkdir -p out - -# -# UTILITIES -# - -watch: all - while true; do \ - inotifywait -qr -e modify -e create -e delete -e move assets content filters metadata scripts templates; \ - $(MAKE); \ - done - -serve: all - python -m http.server --bind 127.0.0.1 --directory out 8000 - -dev: watch serve - -compress: all - pigz -R -k -9 -- `find out -type f -iregex '.*\\.\\(css\\|js\\|json\\|html\\|xml\\|txt\\|svg\\|ico\\)'` - brotli -k -- `find out -type f -iregex '.*\\.\\(css\\|js\\|json\\|html\\|xml\\|txt\\|svg\\|ico\\|woff\\)'` - -deploy: compress - rsync --progress --stats -rvz --delete out/ "$(DEPLOY_TARGET)" - -clean: - rm -rf out - -.PHONY: all watch serve dev deploy clean diff --git a/filters/icons.lua b/filters/icons.lua index 9e921f3..36d2108 100644 --- a/filters/icons.lua +++ b/filters/icons.lua @@ -4,7 +4,7 @@ function Str(el) if icon then return pandoc.RawInline('html', '') end diff --git a/templates/base.html b/templates/base.html index 4ffd690..6559a56 100644 --- a/templates/base.html +++ b/templates/base.html @@ -41,7 +41,7 @@ $if(namespace.root.is_index)$$else$$title$ – $endif$$site.title$ - + @@ -49,7 +49,7 @@ - + @@ -87,8 +87,8 @@ ${layouts/page()} - - + + diff --git a/templates/layouts/exhibit.html b/templates/layouts/exhibit.html index 3170305..fcc92a4 100644 --- a/templates/layouts/exhibit.html +++ b/templates/layouts/exhibit.html @@ -10,13 +10,13 @@ @@ -56,4 +56,4 @@ $body$ - + diff --git a/templates/layouts/page.html b/templates/layouts/page.html index e40bf4c..53af7e0 100644 --- a/templates/layouts/page.html +++ b/templates/layouts/page.html @@ -40,7 +40,7 @@ $body$
@@ -48,13 +48,13 @@ $body$ @@ -63,4 +63,4 @@ $body$
- + diff --git a/templates/partials/gallery_card.html b/templates/partials/gallery_card.html index 40d3495..4aa274a 100644 --- a/templates/partials/gallery_card.html +++ b/templates/partials/gallery_card.html @@ -26,7 +26,7 @@ $if(it.thumbnail)$ $endif$ $if(it.icon)$ $endif$
@@ -51,7 +51,7 @@ $if(it.thumbnail)$
$if(it.post_icon)$ $endif$ diff --git a/templates/partials/grid_card.html b/templates/partials/grid_card.html index 8c7ea0a..4120169 100644 --- a/templates/partials/grid_card.html +++ b/templates/partials/grid_card.html @@ -13,7 +13,7 @@ $if(it.url)$ $endif$ $if(it.icon)$ $endif$
@@ -38,7 +38,7 @@ $if(it.url)$
$if(it.post_icon)$ $endif$ diff --git a/templates/partials/list_card.html b/templates/partials/list_card.html index dc9111e..539b7d3 100644 --- a/templates/partials/list_card.html +++ b/templates/partials/list_card.html @@ -13,7 +13,7 @@ $if(it.url)$ $endif$ $if(it.icon)$ $endif$
@@ -54,7 +54,7 @@ $if(it.url)$ $endif$ $if(it.post_icon)$ $endif$
-- cgit v1.2.3-54-g00ecf