From 599e7669d0ea5b082f4b65754e976557d36d0970 Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Fri, 27 Mar 2020 12:19:59 -0400 Subject: [PATCH] Add CSS cache busting to templates in release --- Makefile | 1 + scripts/invalidate-css.sh | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100755 scripts/invalidate-css.sh diff --git a/Makefile b/Makefile index 85f02d3..05bc1c6 100644 --- a/Makefile +++ b/Makefile @@ -86,6 +86,7 @@ release : clean ui assets cp -r templates $(BUILDPATH) cp -r pages $(BUILDPATH) cp -r static $(BUILDPATH) + scripts/invalidate-css.sh $(BUILDPATH) mkdir $(BUILDPATH)/keys $(MAKE) build-linux mv build/$(BINARY_NAME)-linux-amd64 $(BUILDPATH)/$(BINARY_NAME) diff --git a/scripts/invalidate-css.sh b/scripts/invalidate-css.sh new file mode 100755 index 0000000..c411f70 --- /dev/null +++ b/scripts/invalidate-css.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# +# Copyright © 2020 A Bunch Tell LLC. +# +# This file is part of WriteFreely. +# +# WriteFreely is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License, included +# in the LICENSE file in this source code package. +# +############################################################################### +# +# WriteFreely CSS invalidation script +# +# usage: ./invalidate-css.sh +# +# This script provides an automated way to invalidate stylesheets cached in the +# browser. It uses the last git commit hashes of the most frequently modified +# LESS files in the project and appends them to the stylesheet `href` in all +# template files. +# +# This is designed to be used when building a WriteFreely release. +# +############################################################################### + +# Get parent build directory from first argument +buildDir=$1 + +# Get short hash of each primary LESS file's last commit +cssHash=$(git log -n 1 --pretty=format:%h -- less/core.less) +cssNewHash=$(git log -n 1 --pretty=format:%h -- less/new-core.less) +cssPadHash=$(git log -n 1 --pretty=format:%h -- less/pad.less) + +echo "Adding write.css version ($cssHash $cssNewHash $cssPadHash) to .tmpl files..." +cd "$buildDir/templates" || exit 1 +find . -type f -name "*.tmpl" -print0 | xargs -0 sed -i "s/write.css/write.css?${cssHash}${cssNewHash}${cssPadHash}/g" +find . -type f -name "*.tmpl" -print0 | xargs -0 sed -i "s/{{.Theme}}.css/{{.Theme}}.css?${cssHash}${cssNewHash}${cssPadHash}/g" \ No newline at end of file