# host/scripts/generate_icons.sh #!/bin/bash # Resolve the directory where the script is located SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" # Project Root is two levels up (host/scripts -> host -> root) PROJECT_ROOT="$SCRIPT_DIR/../.." MAGICK_BIN="$1" if [ -z "$MAGICK_BIN" ]; then MAGICK_BIN="magick"; fi SOURCE="$PROJECT_ROOT/assets/icon_source.png" OUT_DIR="$PROJECT_ROOT/assets/icons" ANDROID_RES_DIR="$PROJECT_ROOT/host/android/res" if [ ! -f "$SOURCE" ]; then echo "Error: Source image '$SOURCE' not found." exit 1 fi # Verify magick works "$MAGICK_BIN" -version >/dev/null 2>&1 if [ $? -ne 0 ]; then echo "Error: ImageMagick tool '$MAGICK_BIN' not found or not working." exit 1 fi mkdir -p "$OUT_DIR" # macOS ICONSET="$OUT_DIR/icon.iconset" mkdir -p "$ICONSET" "$MAGICK_BIN" "$SOURCE" -scale 16x16 "$ICONSET/icon_16x16.png" "$MAGICK_BIN" "$SOURCE" -scale 32x32 "$ICONSET/icon_16x16@2x.png" "$MAGICK_BIN" "$SOURCE" -scale 32x32 "$ICONSET/icon_32x32.png" "$MAGICK_BIN" "$SOURCE" -scale 64x64 "$ICONSET/icon_32x32@2x.png" "$MAGICK_BIN" "$SOURCE" -scale 128x128 "$ICONSET/icon_128x128.png" "$MAGICK_BIN" "$SOURCE" -scale 256x256 "$ICONSET/icon_128x128@2x.png" "$MAGICK_BIN" "$SOURCE" -scale 256x256 "$ICONSET/icon_256x256.png" "$MAGICK_BIN" "$SOURCE" -scale 512x512 "$ICONSET/icon_256x256@2x.png" "$MAGICK_BIN" "$SOURCE" -scale 512x512 "$ICONSET/icon_512x512.png" "$MAGICK_BIN" "$SOURCE" -scale 1024x1024 "$ICONSET/icon_512x512@2x.png" iconutil -c icns "$ICONSET" -o "$OUT_DIR/app_icon.icns" rm -rf "$ICONSET" # Windows "$MAGICK_BIN" "$SOURCE" \ \( -clone 0 -scale 256x256 \) \ \( -clone 0 -scale 128x128 \) \ \( -clone 0 -scale 64x64 \) \ \( -clone 0 -scale 48x48 \) \ \( -clone 0 -scale 32x32 \) \ \( -clone 0 -scale 16x16 \) \ -delete 0 -alpha off -colors 256 "$OUT_DIR/app_icon.ico" # Android echo "Generating Android Icons into $ANDROID_RES_DIR..." mkdir -p "$ANDROID_RES_DIR/mipmap-mdpi" "$MAGICK_BIN" "$SOURCE" -scale 48x48 "$ANDROID_RES_DIR/mipmap-mdpi/ic_launcher.png" mkdir -p "$ANDROID_RES_DIR/mipmap-hdpi" "$MAGICK_BIN" "$SOURCE" -scale 72x72 "$ANDROID_RES_DIR/mipmap-hdpi/ic_launcher.png" mkdir -p "$ANDROID_RES_DIR/mipmap-xhdpi" "$MAGICK_BIN" "$SOURCE" -scale 96x96 "$ANDROID_RES_DIR/mipmap-xhdpi/ic_launcher.png" mkdir -p "$ANDROID_RES_DIR/mipmap-xxhdpi" "$MAGICK_BIN" "$SOURCE" -scale 144x144 "$ANDROID_RES_DIR/mipmap-xxhdpi/ic_launcher.png" mkdir -p "$ANDROID_RES_DIR/mipmap-xxxhdpi" "$MAGICK_BIN" "$SOURCE" -scale 192x192 "$ANDROID_RES_DIR/mipmap-xxxhdpi/ic_launcher.png" # iOS XCASSETS_DIR="$OUT_DIR/ios/Assets.xcassets" IOS_DIR="$XCASSETS_DIR/AppIcon.appiconset" mkdir -p "$IOS_DIR" cat > "$XCASSETS_DIR/Contents.json" < "$IOS_DIR/Contents.json" <