FRE-606: Add icon generation and tests for Tauri desktop
- Add generate-icons.sh script for cross-platform icon generation - Generate all required icon sizes (32x32, 128x128, 256x256, 512x512) - Create Windows .ico and macOS .icns icons - Add Rust unit tests for core functionality - Add tauri:test and tauri:icons npm scripts New files: - src-tauri/generate-icons.sh - src-tauri/icons/32x32.png - src-tauri/icons/128x128.png - src-tauri/icons/128x128@2x.png - src-tauri/icons/512x512.png - src-tauri/icons/icon.ico - src-tauri/icons/icon.icns - src-tauri/icons/src/app-icon.svg - src-tauri/icons/tray-icon.png - src-tauri/src/tests.rs Modified: - src-tauri/src/lib.rs (added tests module)
This commit is contained in:
87
src-tauri/generate-icons.sh
Executable file
87
src-tauri/generate-icons.sh
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
# Icon generation script for Tauri desktop app
|
||||
# Generates all required icon sizes from source
|
||||
|
||||
set -e
|
||||
|
||||
ICONS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
SRC_DIR="$ICONS_DIR/icons/src"
|
||||
OUT_DIR="$ICONS_DIR"
|
||||
|
||||
echo "Generating FrenoCorp desktop app icons..."
|
||||
|
||||
# Check if ImageMagick is available
|
||||
if ! command -v convert &> /dev/null; then
|
||||
echo "Warning: ImageMagick 'convert' not found. Install with:"
|
||||
echo " macOS: brew install imagemagick"
|
||||
echo " Ubuntu: sudo apt-get install imagemagick"
|
||||
echo " Windows: choco install imagemagick"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Generate PNG icons at required sizes
|
||||
echo "Generating PNG icons..."
|
||||
for size in 32 128; do
|
||||
echo " Creating ${size}x${size}.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "${size}x${size}" "$OUT_DIR/${size}x${size}.png"
|
||||
done
|
||||
|
||||
# Generate 128x128@2x (256x256)
|
||||
echo " Creating 128x128@2x.png (256x256)"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "256x256" "$OUT_DIR/128x128@2x.png"
|
||||
|
||||
# Generate square icon (512x512 for general use)
|
||||
echo " Creating 512x512.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "512x512" "$OUT_DIR/512x512.png"
|
||||
|
||||
# Generate macOS icon (icns)
|
||||
echo "Generating macOS icon (icon.icns)..."
|
||||
mkdir -p "$ICONS_DIR/icon.iconset"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "16x16" "$ICONS_DIR/icon.iconset/icon_16x16.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "32x32" "$ICONS_DIR/icon.iconset/icon_16x16@2x.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "32x32" "$ICONS_DIR/icon.iconset/icon_32x32.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "64x64" "$ICONS_DIR/icon.iconset/icon_32x32@2x.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "128x128" "$ICONS_DIR/icon.iconset/icon_128x128.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "256x256" "$ICONS_DIR/icon.iconset/icon_128x128@2x.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "256x256" "$ICONS_DIR/icon.iconset/icon_256x256.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "512x512" "$ICONS_DIR/icon.iconset/icon_256x256@2x.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "512x512" "$ICONS_DIR/icon.iconset/icon_512x512.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "1024x1024" "$ICONS_DIR/icon.iconset/icon_512x512@2x.png"
|
||||
|
||||
# Create .icns file (macOS requires iconutil on macOS, fallback to png2icns)
|
||||
if command -v iconutil &> /dev/null; then
|
||||
iconutil -c icns "$ICONS_DIR/icon.iconset" -o "$OUT_DIR/icon.icns"
|
||||
else
|
||||
echo " Note: iconutil not found (not on macOS). Using png fallback."
|
||||
fi
|
||||
|
||||
# Clean up temporary iconset
|
||||
rm -rf "$ICONS_DIR/icon.iconset"
|
||||
|
||||
# Generate Windows icon (ico) - contains multiple sizes
|
||||
echo "Generating Windows icon (icon.ico)..."
|
||||
mkdir -p "$ICONS_DIR/temp_ico"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "16x16" "$ICONS_DIR/temp_ico/16.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "32x32" "$ICONS_DIR/temp_ico/32.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "48x48" "$ICONS_DIR/temp_ico/48.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "64x64" "$ICONS_DIR/temp_ico/64.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "128x128" "$ICONS_DIR/temp_ico/128.png"
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "256x256" "$ICONS_DIR/temp_ico/256.png"
|
||||
convert "$ICONS_DIR/temp_ico/*.png" -define icon:auto-resize=256,128,64,48,32,16 "$OUT_DIR/icon.ico"
|
||||
rm -rf "$ICONS_DIR/temp_ico"
|
||||
|
||||
# Generate tray icon
|
||||
echo "Generating tray icon..."
|
||||
convert "$SRC_DIR/app-icon.svg" -resize "32x32" -background none "$OUT_DIR/tray-icon.png"
|
||||
|
||||
echo ""
|
||||
echo "✅ Icon generation complete!"
|
||||
echo ""
|
||||
echo "Generated files:"
|
||||
ls -1 "$OUT_DIR"/*.png "$OUT_DIR"/*.ico "$OUT_DIR"/*.icns 2>/dev/null | xargs -I {} basename {}
|
||||
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo " 1. Review generated icons"
|
||||
echo " 2. Run: npm run tauri:build"
|
||||
echo " 3. Test on target platforms"
|
||||
Reference in New Issue
Block a user