101 lines
No EOL
4.2 KiB
Bash
Executable file
101 lines
No EOL
4.2 KiB
Bash
Executable file
#!/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" |