streamflow/scripts/generate-assets.sh

113 lines
3.5 KiB
Bash
Raw Normal View History

#!/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"