Restore to commit 74e578279624c6045ca440a3459ebfa1f8d54191

This commit is contained in:
southseact-3d
2026-02-07 20:32:41 +00:00
commit ed67b7741b
252 changed files with 99814 additions and 0 deletions

92
scripts/validate-env.sh Executable file
View File

@@ -0,0 +1,92 @@
#!/bin/bash
# Validate .env files for common issues including invisible Unicode characters
# This script can be run before deployment to catch potential problems
set -e
ENV_FILE="${1:-.env}"
if [ ! -f "$ENV_FILE" ]; then
echo "✓ No $ENV_FILE file found (using environment variables or defaults)"
exit 0
fi
if [ $# -lt 1 ]; then
echo "Usage: $(basename "$0") [.env file path]"
echo "Example: $(basename "$0") .env"
exit 1
fi
echo "Validating $ENV_FILE..."
echo ""
# Check for invisible Unicode characters
FOUND_ISSUES=0
# Check for U+200E (Left-to-Right Mark) - E2 80 8E
if grep -q $'\xE2\x80\x8E' "$ENV_FILE" 2>/dev/null; then
echo "✗ Found U+200E (Left-to-Right Mark) invisible character"
grep -n $'\xE2\x80\x8E' "$ENV_FILE" | head -5
FOUND_ISSUES=1
fi
# Check for U+200F (Right-to-Left Mark) - E2 80 8F
if grep -q $'\xE2\x80\x8F' "$ENV_FILE" 2>/dev/null; then
echo "✗ Found U+200F (Right-to-Left Mark) invisible character"
grep -n $'\xE2\x80\x8F' "$ENV_FILE" | head -5
FOUND_ISSUES=1
fi
# Check for U+200B (Zero Width Space) - E2 80 8B
if grep -q $'\xE2\x80\x8B' "$ENV_FILE" 2>/dev/null; then
echo "✗ Found U+200B (Zero Width Space) invisible character"
grep -n $'\xE2\x80\x8B' "$ENV_FILE" | head -5
FOUND_ISSUES=1
fi
# Check for BOM (Byte Order Mark) - EF BB BF
if grep -q $'\xEF\xBB\xBF' "$ENV_FILE" 2>/dev/null; then
echo "✗ Found BOM (Byte Order Mark) at start of file"
FOUND_ISSUES=1
fi
# Check for other directional formatting characters
for code in $'\xE2\x80\xAA' $'\xE2\x80\xAB' $'\xE2\x80\xAC' $'\xE2\x80\xAD' $'\xE2\x80\xAE'; do
if grep -q "$code" "$ENV_FILE" 2>/dev/null; then
echo "✗ Found directional formatting invisible character"
FOUND_ISSUES=1
break
fi
done
# Check for Windows line endings (CRLF) if file command is available
if command -v file >/dev/null 2>&1; then
if file "$ENV_FILE" | grep -q CRLF 2>/dev/null; then
echo "⚠ Warning: File has Windows line endings (CRLF)"
echo " This may cause issues on Linux. Consider converting to LF."
fi
fi
# Check for trailing spaces on variable definitions
if grep -E '^[A-Z_]+[[:space:]]+=' "$ENV_FILE" >/dev/null 2>&1; then
echo "⚠ Warning: Found spaces before '=' in variable definitions"
grep -n -E '^[A-Z_]+[[:space:]]+=' "$ENV_FILE"
fi
# Check for spaces in variable names
if grep -E '^[A-Z_]+[[:space:]]+[^=]*=' "$ENV_FILE" >/dev/null 2>&1; then
echo "⚠ Warning: Possible spaces in variable names"
fi
if [ $FOUND_ISSUES -eq 0 ]; then
echo "✓ No invisible Unicode characters found"
echo "✓ File looks clean!"
exit 0
else
echo ""
echo "----------------------------------------"
echo "Issues found! Run the following to fix:"
echo " ./scripts/clean-env.sh $ENV_FILE"
echo "----------------------------------------"
exit 1
fi