112 lines
3.5 KiB
Bash
Executable file
112 lines
3.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# StreamFlow - Platform Asset Generator
|
|
# Generates optimized assets for PWA, Android, and Desktop
|
|
|
|
set -e
|
|
|
|
echo "🎨 StreamFlow Platform Asset Generator"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
cd "$(dirname "$0")/.."
|
|
PROJECT_ROOT="$(pwd)"
|
|
|
|
# Check for ImageMagick
|
|
if ! command -v convert &> /dev/null; then
|
|
echo "❌ ImageMagick is not installed. Installing..."
|
|
if command -v apt-get &> /dev/null; then
|
|
sudo apt-get update && sudo apt-get install -y imagemagick
|
|
elif command -v brew &> /dev/null; then
|
|
brew install imagemagick
|
|
else
|
|
echo "Please install ImageMagick manually: https://imagemagick.org/script/download.php"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
SOURCE_ICON="frontend/public/icons/icon-512x512.svg"
|
|
|
|
if [ ! -f "$SOURCE_ICON" ]; then
|
|
echo "❌ Source icon not found: $SOURCE_ICON"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "📱 Generating PWA icons..."
|
|
PWA_SIZES=(72 96 128 144 152 192 384 512)
|
|
for size in "${PWA_SIZES[@]}"; do
|
|
echo " → ${size}x${size}px"
|
|
convert "$SOURCE_ICON" -resize ${size}x${size} "frontend/public/icons/icon-${size}x${size}.png"
|
|
done
|
|
|
|
echo ""
|
|
echo "🍎 Generating iOS icons..."
|
|
convert "$SOURCE_ICON" -resize 180x180 "frontend/public/icons/apple-touch-icon.png"
|
|
convert "$SOURCE_ICON" -resize 167x167 "frontend/public/icons/apple-touch-icon-ipad.png"
|
|
|
|
echo ""
|
|
echo "🤖 Generating Android icons..."
|
|
ANDROID_SIZES=(48 72 96 144 192)
|
|
ANDROID_DENSITIES=(mdpi hdpi xhdpi xxhdpi xxxhdpi)
|
|
mkdir -p frontend/public/android-icons
|
|
|
|
for i in "${!ANDROID_SIZES[@]}"; do
|
|
size="${ANDROID_SIZES[$i]}"
|
|
density="${ANDROID_DENSITIES[$i]}"
|
|
echo " → ${density} (${size}x${size}px)"
|
|
convert "$SOURCE_ICON" -resize ${size}x${size} "frontend/public/android-icons/icon-${density}.png"
|
|
done
|
|
|
|
echo ""
|
|
echo "🐧 Generating Linux Desktop icons..."
|
|
convert "$SOURCE_ICON" -resize 512x512 "desktop-app/build/icon.png"
|
|
cp "$SOURCE_ICON" "desktop-app/build/icon.svg"
|
|
|
|
echo ""
|
|
echo "🌐 Generating favicon..."
|
|
convert "$SOURCE_ICON" -resize 32x32 "frontend/public/favicon.png"
|
|
convert "$SOURCE_ICON" -resize 16x16 -resize 32x32 -resize 48x48 "frontend/public/favicon.ico"
|
|
|
|
echo ""
|
|
echo "📄 Generating splash screens..."
|
|
# PWA splash screens for iOS
|
|
IOS_SPLASH_SIZES=(
|
|
"640x1136:iphone5"
|
|
"750x1334:iphone6"
|
|
"828x1792:iphone11"
|
|
"1125x2436:iphonex"
|
|
"1242x2208:iphone6plus"
|
|
"1242x2688:iphonemax"
|
|
"1536x2048:ipad"
|
|
"1668x2224:ipadpro10"
|
|
"1668x2388:ipadpro11"
|
|
"2048x2732:ipadpro12"
|
|
)
|
|
|
|
mkdir -p frontend/public/splash
|
|
|
|
for splash_config in "${IOS_SPLASH_SIZES[@]}"; do
|
|
IFS=':' read -r size name <<< "$splash_config"
|
|
IFS='x' read -r width height <<< "$size"
|
|
echo " → ${name} (${width}x${height}px)"
|
|
|
|
# Create splash with icon centered on background
|
|
convert -size ${width}x${height} xc:"#121212" \
|
|
\( "$SOURCE_ICON" -resize 256x256 \) \
|
|
-gravity center -composite \
|
|
"frontend/public/splash/splash-${name}.png"
|
|
done
|
|
|
|
echo ""
|
|
echo "✅ Asset generation complete!"
|
|
echo ""
|
|
echo "📦 Generated assets:"
|
|
echo " PWA: frontend/public/icons/*.png"
|
|
echo " iOS: frontend/public/icons/apple-touch-icon*.png"
|
|
echo " Android: frontend/public/android-icons/*.png"
|
|
echo " Desktop: desktop-app/build/icon.{png,svg}"
|
|
echo " Favicon: frontend/public/favicon.{ico,png}"
|
|
echo " Splash: frontend/public/splash/*.png"
|
|
echo ""
|
|
echo "🔄 Next: Rebuild Docker container to include new assets"
|
|
echo " docker compose build --no-cache"
|