#!/bin/bash # Dubai Metaverse - Asset Validation Script # Validates asset naming conventions and structure set -e # Exit on error echo "==========================================" echo "Dubai Metaverse - Asset Validation" echo "==========================================" echo "" # Check if Content directory exists if [ ! -d "Content" ]; then echo "Error: Content directory not found" echo "Run this script from the UE5 project root directory" exit 1 fi ERRORS=0 WARNINGS=0 # Function to check naming convention check_naming() { local file="$1" local basename=$(basename "$file") # Check for spaces if [[ "$basename" == *" "* ]]; then echo " ❌ ERROR: Contains spaces: $basename" ((ERRORS++)) return 1 fi # Check for special characters (except underscores and hyphens) if [[ "$basename" =~ [^a-zA-Z0-9_\-\.] ]]; then echo " ❌ ERROR: Contains invalid characters: $basename" ((ERRORS++)) return 1 fi # Check prefix based on extension local ext="${basename##*.}" case "$ext" in uasset) if [[ ! "$basename" =~ ^(SM_|SK_|M_|MI_|BP_|ABP_|BT_|P_|A_|SQ_|CineCamera_|DA_|WBP_|PCG_|D_|PP_) ]]; then echo " ⚠ WARNING: Missing prefix: $basename" ((WARNINGS++)) fi ;; *) # Other file types - basic validation only ;; esac return 0 } # Scan Content directory for assets echo "Scanning Content directory..." echo "" find Content -type f -name "*.uasset" -o -name "*.umap" | while read -r file; do check_naming "$file" done # Summary echo "" echo "==========================================" echo "Validation Complete" echo "==========================================" echo "" echo "Errors: $ERRORS" echo "Warnings: $WARNINGS" echo "" if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then echo "✓ All assets passed validation" exit 0 elif [ $ERRORS -eq 0 ]; then echo "⚠ Some warnings found, but no errors" exit 0 else echo "❌ Validation failed. Please fix errors before committing." exit 1 fi