#!/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