Files
web-imposter-game/version-assets.sh
Dasemu e30aa089e4
Some checks failed
Build Android APK / build (push) Has been cancelled
Version Static Assets / version-assets (push) Has been cancelled
feat(versioning): update asset paths and versioning logic in HTML and scripts
2026-01-22 08:32:14 +01:00

87 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Script de versionado de archivos estáticos
# Genera hashes basados en el contenido y actualiza referencias en HTML
set -e
echo "🚀 Iniciando versionado de archivos estáticos..."
echo ""
# Directorio de trabajo
WWW_DIR="www"
# Archivos a versionar
ASSETS=("script.js" "styles.css" "logo.png")
HTML_FILE="index.html"
# Función para generar hash MD5 de un archivo
generate_hash() {
local file=$1
md5sum "$file" | cut -c1-8
}
# Función para obtener el nombre versionado
get_versioned_name() {
local file=$1
local hash=$2
local base="${file%.*}"
local ext="${file##*.}"
echo "${base}.${hash}.${ext}"
}
# Limpiar archivos versionados antiguos
echo "🗑️ Limpiando versiones antiguas..."
rm -f "$WWW_DIR"/*.*.js "$WWW_DIR"/*.*.css "$WWW_DIR"/*.*.png 2>/dev/null || true
echo ""
# Crear backup del HTML
cp "$WWW_DIR/$HTML_FILE" "$WWW_DIR/${HTML_FILE}.bak"
# Versionar cada archivo
for asset in "${ASSETS[@]}"; do
asset_path="$WWW_DIR/$asset"
if [[ ! -f "$asset_path" ]]; then
echo "⚠️ Advertencia: $asset_path no encontrado, saltando..."
continue
fi
# Generar hash
hash=$(generate_hash "$asset_path")
versioned=$(get_versioned_name "$asset" "$hash")
versioned_path="$WWW_DIR/$versioned"
# Copiar archivo con versión
echo "📦 Versionando: $asset$versioned"
cp "$asset_path" "$versioned_path"
# Obtener nombre base y extensión para el patrón
base="${asset%.*}"
ext="${asset##*.}"
# Actualizar referencia en HTML (busca versión original o hasheada)
case "$asset" in
*.js)
sed -i -E "s|src=\"${base}(\.[a-f0-9]{8})?\.${ext}\"|src=\"${versioned}\"|g" "$WWW_DIR/$HTML_FILE"
;;
*.css)
sed -i -E "s|href=\"${base}(\.[a-f0-9]{8})?\.${ext}\"|href=\"${versioned}\"|g" "$WWW_DIR/$HTML_FILE"
;;
*.png)
sed -i -E "s|href=\"${base}(\.[a-f0-9]{8})?\.${ext}\"|href=\"${versioned}\"|g" "$WWW_DIR/$HTML_FILE"
sed -i -E "s|src=\"${base}(\.[a-f0-9]{8})?\.${ext}\"|src=\"${versioned}\"|g" "$WWW_DIR/$HTML_FILE"
;;
esac
echo "✏️ Actualizado: $asset$versioned en $HTML_FILE"
echo ""
done
# Limpiar backup
rm -f "$WWW_DIR/${HTML_FILE}.bak"
echo "✅ Versionado completado exitosamente!"
echo ""
echo "📋 Archivos versionados:"
ls -1 "$WWW_DIR"/*.*.{js,css,png} 2>/dev/null || echo " (ninguno)"