#!/bin/bash
set -e
mkdir -p static-tmp
cp -a static/* static-tmp/
declare -a replacements
while IFS= read -r file; do
[ -f "$file" ] || continue
hash=$(sha256sum "$file" | head -c 8)
sri_hash=sha256-$(openssl dgst -sha256 -binary "$file" | openssl base64 -A)
dest="$(dirname "$file")/$hash.$(basename "$file")"
rel_path="${file#*/}"
dest_path="${dest#*/}"
if [[ "$file" == *.css ]]; then
replacements+=("s@{{css|/$rel_path}}@@g")
elif [[ "$file" == *.js ]]; then
replacements+=("s@{{js|/$rel_path}}@@g")
fi
mv "$file" "$dest"
replacements+=("s@{{integrity|/$rel_path}}@$sri_hash@g")
replacements+=("s@{{path|/$rel_path}}@/$dest_path@g")
done < <(find static-tmp -type f \( -name "*.css" -o -name "*.js" \))
while IFS= read -r htmlfile; do
for rep in "${replacements[@]}"; do
sed -i "$rep" "$htmlfile"
done
done < <(find static-tmp -type f -name "*.html")
rm -rf static
mv static-tmp static