1#!/bin/bash
2# generate_icons.sh
3# Generuje všechny iOS/macOS velikosti ikon z jednoho zdrojového PNG.
4# Použití: ./scripts/generate_icons.sh /cesta/k/logo.png
5#
6# Zdroj musí být min. 1024×1024 px (čtvercový, bez průhlednosti pro App Store).
7# Vyžaduje: macOS sips (je součástí macOS, žádné závislosti).
8
9set -e
10
11SRC="${1:-}"
12if [ -z "$SRC" ]; then
13 echo "Použití: $0 <cesta_k_logo.png>"
14 exit 1
15fi
16if [ ! -f "$SRC" ]; then
17 echo "Soubor nenalezen: $SRC"
18 exit 1
19fi
20
21SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
22REPO_ROOT="$(dirname "$SCRIPT_DIR")"
23OUT="$REPO_ROOT/SophaxChat/Assets.xcassets/AppIcon.appiconset"
24mkdir -p "$OUT"
25
26echo "→ Generuji iOS ikony z: $SRC"
27echo "→ Výstup: $OUT"
28
29# Všechny požadované velikosti pro iOS + macOS Catalyst
30declare -a SIZES=(20 29 40 48 55 58 60 64 66 76 80 87 88 92 102 120 167 172 180 196 216 234 258 1024)
31
32for SIZE in "${SIZES[@]}"; do
33 OUT_FILE="$OUT/icon_${SIZE}.png"
34 sips -z "$SIZE" "$SIZE" "$SRC" --out "$OUT_FILE" > /dev/null
35done
36
37# Contents.json pro Xcode
38cat > "$OUT/Contents.json" << 'EOF'
39{
40 "images" : [
41 { "idiom":"universal", "platform":"ios", "size":"20x20", "scale":"1x", "filename":"icon_20.png" },
42 { "idiom":"universal", "platform":"ios", "size":"20x20", "scale":"2x", "filename":"icon_40.png" },
43 { "idiom":"universal", "platform":"ios", "size":"20x20", "scale":"3x", "filename":"icon_60.png" },
44 { "idiom":"universal", "platform":"ios", "size":"29x29", "scale":"1x", "filename":"icon_29.png" },
45 { "idiom":"universal", "platform":"ios", "size":"29x29", "scale":"2x", "filename":"icon_58.png" },
46 { "idiom":"universal", "platform":"ios", "size":"29x29", "scale":"3x", "filename":"icon_87.png" },
47 { "idiom":"universal", "platform":"ios", "size":"40x40", "scale":"1x", "filename":"icon_40.png" },
48 { "idiom":"universal", "platform":"ios", "size":"40x40", "scale":"2x", "filename":"icon_80.png" },
49 { "idiom":"universal", "platform":"ios", "size":"40x40", "scale":"3x", "filename":"icon_120.png" },
50 { "idiom":"universal", "platform":"ios", "size":"60x60", "scale":"2x", "filename":"icon_120.png" },
51 { "idiom":"universal", "platform":"ios", "size":"60x60", "scale":"3x", "filename":"icon_180.png" },
52 { "idiom":"universal", "platform":"ios", "size":"76x76", "scale":"1x", "filename":"icon_76.png" },
53 { "idiom":"universal", "platform":"ios", "size":"76x76", "scale":"2x", "filename":"icon_152.png" },
54 { "idiom":"universal", "platform":"ios", "size":"83.5x83.5","scale":"2x","filename":"icon_167.png" },
55 { "idiom":"universal", "platform":"ios", "size":"1024x1024","scale":"1x","filename":"icon_1024.png" },
56 { "idiom":"mac", "platform":"macos","size":"16x16", "scale":"1x", "filename":"icon_20.png" },
57 { "idiom":"mac", "platform":"macos","size":"16x16", "scale":"2x", "filename":"icon_40.png" },
58 { "idiom":"mac", "platform":"macos","size":"32x32", "scale":"1x", "filename":"icon_29.png" },
59 { "idiom":"mac", "platform":"macos","size":"32x32", "scale":"2x", "filename":"icon_58.png" },
60 { "idiom":"mac", "platform":"macos","size":"128x128","scale":"1x", "filename":"icon_120.png" },
61 { "idiom":"mac", "platform":"macos","size":"128x128","scale":"2x", "filename":"icon_258.png" },
62 { "idiom":"mac", "platform":"macos","size":"256x256","scale":"1x", "filename":"icon_258.png" },
63 { "idiom":"mac", "platform":"macos","size":"256x256","scale":"2x", "filename":"icon_1024.png" },
64 { "idiom":"mac", "platform":"macos","size":"512x512","scale":"1x", "filename":"icon_1024.png" },
65 { "idiom":"mac", "platform":"macos","size":"512x512","scale":"2x", "filename":"icon_1024.png" }
66 ],
67 "info" : { "author":"xcode", "version":1 }
68}
69EOF
70
71echo "✓ iOS ikony vygenerovány ($(echo "${SIZES[@]}" | wc -w | tr -d ' ') souborů)"
72echo "✓ Contents.json aktualizován"
73echo ""
74echo "Další krok: znovu spustit 'xcodegen generate' pokud jsi změnil projekt"