website-htmx-rustelo-code/scripts/sh/content/normalize-content.sh

101 lines
4.2 KiB
Bash
Raw Normal View History

2026-07-10 03:44:13 +01:00
#!/bin/bash
# Simple Content Normalization Script
# Normalizes a few key categories that need fixes and adds slug fields
set -e
CONTENT_ROOT="content"
BACKUP_DIR="content-backup-$(date +%Y%m%d_%H%M%S)"
echo "🔄 Starting simple content normalization"
echo "📁 Content root: $CONTENT_ROOT"
echo "💾 Backup will be created at: $BACKUP_DIR"
# Create backup
echo "📦 Creating backup..."
cp -r "$CONTENT_ROOT" "$BACKUP_DIR"
echo "✅ Backup created successfully"
# Fix specific categories that need normalization
echo "🔄 Normalizing specific categories..."
# Fix "Rust Programming" -> "rust-programming"
find "$CONTENT_ROOT" -name "*.json" -exec sed -i '' 's/"Rust Programming"/"rust-programming"/g' {} \;
find "$CONTENT_ROOT" -name "*.md" -exec sed -i '' 's/category: "Rust Programming"/category: "rust-programming"/g' {} \;
# Fix "Async Programming" -> "async-programming"
find "$CONTENT_ROOT" -name "*.json" -exec sed -i '' 's/"Async Programming"/"async-programming"/g' {} \;
find "$CONTENT_ROOT" -name "*.md" -exec sed -i '' 's/category: "Async Programming"/category: "async-programming"/g' {} \;
# Fix "Error Handling" -> "error-handling"
find "$CONTENT_ROOT" -name "*.json" -exec sed -i '' 's/"Error Handling"/"error-handling"/g' {} \;
find "$CONTENT_ROOT" -name "*.md" -exec sed -i '' 's/"Error Handling"/"error-handling"/g' {} \;
# Fix "Best Practices" -> "best-practices"
find "$CONTENT_ROOT" -name "*.json" -exec sed -i '' 's/"Best Practices"/"best-practices"/g' {} \;
find "$CONTENT_ROOT" -name "*.md" -exec sed -i '' 's/"Best Practices"/"best-practices"/g' {} \;
# Fix "Cloud Native" -> "cloud-native"
find "$CONTENT_ROOT" -name "*.json" -exec sed -i '' 's/"Cloud Native"/"cloud-native"/g' {} \;
find "$CONTENT_ROOT" -name "*.md" -exec sed -i '' 's/"Cloud Native"/"cloud-native"/g' {} \;
# Fix Spanish categories
find "$CONTENT_ROOT" -name "*.json" -exec sed -i '' 's/"Programación Rust"/"programacion-rust"/g' {} \;
find "$CONTENT_ROOT" -name "*.md" -exec sed -i '' 's/category: "Programación Rust"/category: "programacion-rust"/g' {} \;
find "$CONTENT_ROOT" -name "*.json" -exec sed -i '' 's/"Programación Asíncrona"/"programacion-asincrona"/g' {} \;
find "$CONTENT_ROOT" -name "*.md" -exec sed -i '' 's/category: "Programación Asíncrona"/category: "programacion-asincrona"/g' {} \;
find "$CONTENT_ROOT" -name "*.json" -exec sed -i '' 's/"Manejo de Errores"/"manejo-de-errores"/g' {} \;
find "$CONTENT_ROOT" -name "*.md" -exec sed -i '' 's/"Manejo de Errores"/"manejo-de-errores"/g' {} \;
find "$CONTENT_ROOT" -name "*.json" -exec sed -i '' 's/"Mejores Prácticas"/"mejores-practicas"/g' {} \;
find "$CONTENT_ROOT" -name "*.md" -exec sed -i '' 's/"Mejores Prácticas"/"mejores-practicas"/g' {} \;
# Function to add slug to markdown files that don't have one
add_slug_to_markdown() {
local file="$1"
# Check if slug already exists
if grep -q "^slug:" "$file"; then
return 0
fi
# Extract title
local title=$(grep "^title:" "$file" | head -1 | sed 's/title: *"*\([^"]*\)"*.*/\1/')
if [[ -n "$title" ]]; then
# Create slug from title
local slug=$(echo "$title" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-\|-$//g')
# Add slug after title
sed -i '' "/^title:/a\\
slug: \"$slug\"" "$file"
echo " 🔗 Added slug '$slug' to $file"
fi
}
# Add slugs to markdown files
echo "🔄 Adding slugs to markdown files..."
find "$CONTENT_ROOT" -name "*.md" | while read -r file; do
add_slug_to_markdown "$file"
done
echo ""
echo "✅ Content normalization completed successfully!"
echo "📁 Backup location: $BACKUP_DIR"
echo ""
echo "📋 Summary of changes:"
echo " • Fixed 'Rust Programming' -> 'rust-programming'"
echo " • Fixed 'Async Programming' -> 'async-programming'"
echo " • Fixed 'Error Handling' -> 'error-handling'"
echo " • Fixed 'Best Practices' -> 'best-practices'"
echo " • Fixed 'Cloud Native' -> 'cloud-native'"
echo " • Fixed Spanish equivalents"
echo " • Added slug fields where missing"
echo ""
echo "🔧 Next steps:"
echo " 1. Test the application"
echo " 2. If satisfied, remove the backup: rm -rf $BACKUP_DIR"