-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·114 lines (102 loc) · 3.74 KB
/
Copy pathbuild.sh
File metadata and controls
executable file
·114 lines (102 loc) · 3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/bash
# Bygg Makropad.app og Makropad.dmg — selvstendig, med Python innebygd.
#
# ./build.sh
#
# Resultat: dist/Makropad.dmg
set -euo pipefail
cd "$(dirname "$0")"
APP="Makropad"
VENV=".venv"
PY="$VENV/bin/python"
echo "▸ Avhengigheter"
[ -d "$VENV" ] || python3 -m venv "$VENV"
"$VENV/bin/pip" install -q --upgrade pip
"$VENV/bin/pip" install -q -r requirements.txt pyinstaller rumps
echo "▸ Ikoner"
if [ ! -f build_assets/Makropad.icns ]; then
if "$PY" -c "import cairosvg" 2>/dev/null; then
(cd design && "../$PY" render_icons.py >/dev/null)
fi
if [ -d build_assets/Makropad.iconset ]; then
rm -f build_assets/Makropad.iconset/icon_64x64*.png \
build_assets/Makropad.iconset/icon_1024x1024.png
iconutil -c icns build_assets/Makropad.iconset -o build_assets/Makropad.icns
else
echo " (ingen ikoner — bygger uten. Kjør design/render_icons.py med cairosvg installert.)"
fi
fi
echo "▸ Rydder"
rm -rf build dist "$APP.spec"
echo "▸ PyInstaller"
ICON_ARG=()
[ -f build_assets/Makropad.icns ] && ICON_ARG=(--icon build_assets/Makropad.icns)
MB_ARG=()
[ -f build_assets/MenubarIconTemplate.png ] && \
MB_ARG=(--add-data "build_assets/MenubarIconTemplate.png:." \
--add-data "build_assets/MenubarIconTemplate@2x.png:.")
"$VENV/bin/pyinstaller" \
--name "$APP" \
--windowed \
--noconfirm \
--clean \
--log-level WARN \
"${ICON_ARG[@]}" \
"${MB_ARG[@]}" \
--add-data "ui.html:." \
--hidden-import paths \
--hidden-import access \
--hidden-import keys \
--hidden-import store \
--add-data "profiles.example.yaml:." \
--osx-bundle-identifier no.macropad.app \
--hidden-import hid \
--hidden-import yaml \
--hidden-import rumps \
--hidden-import Quartz \
--hidden-import AppKit \
--collect-submodules objc \
--collect-all rumps \
menubar.py
PLIST="dist/$APP.app/Contents/Info.plist"
echo "▸ Info.plist"
/usr/libexec/PlistBuddy -c "Set :LSUIElement true" "$PLIST" 2>/dev/null || \
/usr/libexec/PlistBuddy -c "Add :LSUIElement bool true" "$PLIST"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString 1.0" "$PLIST" 2>/dev/null || true
/usr/libexec/PlistBuddy -c "Add :NSHumanReadableCopyright string 'MIT'" "$PLIST" 2>/dev/null || true
echo "▸ Signerer"
# Et ekte Developer ID gjor at macOS kjenner appen igjen pa tvers av bygginger:
# Tilgjengelighet knyttes til bundle-ID + team-ID, ikke til en hash som endrer
# seg hver gang. Uten det (ad-hoc) ma du huke av pa nytt ved hver eneste bygging.
IDENTITY=$(security find-identity -v -p codesigning 2>/dev/null \
| grep "Developer ID Application" | head -1 | sed 's/.*"\(.*\)"/\1/')
if [ -z "$IDENTITY" ]; then
IDENTITY="-"
echo " Fant ingen Developer ID — signerer ad-hoc."
echo " Merk: da ma Tilgjengelighet hukes av pa nytt etter hver bygging."
else
echo " $IDENTITY"
fi
codesign --force --deep --sign "$IDENTITY" --timestamp=none "dist/$APP.app" 2>&1 \
| grep -v "replacing existing signature" || true
codesign --verify --strict "dist/$APP.app" && echo " signatur OK"
echo "▸ DMG"
STAGE=$(mktemp -d)
cp -R "dist/$APP.app" "$STAGE/"
ln -s /Applications "$STAGE/Programmer"
cat > "$STAGE/Les meg.txt" <<'EOF'
Makropad — konfigurator for XZKJ 12-key/4-knob makropad
1. Dra Makropad til Programmer.
2. Start den. Første gang: høyreklikk → Åpne (appen er ikke signert av Apple).
3. Gi Tilgjengelighet-tilgang når den spør — appen må lese padden for å
oversette tastene.
4. Velg «Klargjør padden» i menylinja. Én gang, så er du i gang.
https://github.com/GaimsDevSoftware/macropad-mac
EOF
rm -f "dist/$APP.dmg"
hdiutil create -volname "$APP" -srcfolder "$STAGE" -ov -format UDZO \
-quiet "dist/$APP.dmg"
rm -rf "$STAGE"
echo
echo "✓ dist/$APP.app"
echo "✓ dist/$APP.dmg ($(du -h "dist/$APP.dmg" | cut -f1))"