Files
orca/icon/generate.sh
T
NeilandClaude Opus 4.6 99ed25cc70 Fix Windows build: generate proper ICO file instead of renamed PNG
rcedit requires a real ICO format file. The generate script was just
copying a PNG and renaming it to .ico, which worked locally but failed
in CI with "Reserved header is not 0 or image type is not icon".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 15:16:34 -07:00

51 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Generate app icons from Icon Composer .icon project
# Produces: build/icon.icns (macOS), build/icon.png (fallback), resources/icon.png (tray)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
ICON_SOURCE="$SCRIPT_DIR/icon.icon"
BUILD_DIR="$PROJECT_DIR/build"
RESOURCES_DIR="$PROJECT_DIR/resources"
TMP_DIR=$(mktemp -d)
trap 'rm -rf "$TMP_DIR"' EXIT
echo "Compiling icon from $ICON_SOURCE..."
# Generate .icns using actool (requires Xcode)
xcrun actool \
--compile "$TMP_DIR" \
--platform macosx \
--minimum-deployment-target 10.12 \
--app-icon icon \
--output-partial-info-plist "$TMP_DIR/partial.plist" \
"$ICON_SOURCE" >/dev/null
if [ ! -f "$TMP_DIR/icon.icns" ]; then
echo "Error: actool failed to produce icon.icns" >&2
exit 1
fi
cp "$TMP_DIR/icon.icns" "$BUILD_DIR/icon.icns"
echo " -> build/icon.icns"
# Extract 1024x1024 PNG from icns for electron-builder fallback & resources
sips -s format png --resampleWidth 1024 "$BUILD_DIR/icon.icns" --out "$BUILD_DIR/icon.png" >/dev/null 2>&1
echo " -> build/icon.png (1024x1024)"
sips -s format png --resampleWidth 256 "$BUILD_DIR/icon.icns" --out "$RESOURCES_DIR/icon.png" >/dev/null 2>&1
echo " -> resources/icon.png (256x256)"
# Generate .ico for Windows (proper ICO format with multiple sizes)
if command -v magick &>/dev/null; then
magick "$BUILD_DIR/icon.png" -define icon:auto-resize=256,128,64,48,32,16 "$BUILD_DIR/icon.ico"
echo " -> build/icon.ico (multi-size ICO via ImageMagick)"
else
echo "Warning: ImageMagick not found, skipping icon.ico generation" >&2
echo "Install with: brew install imagemagick" >&2
fi
echo "Done! Icons generated in build/ and resources/"