@@ -72,57 +72,78 @@ jobs:
7272 BREW_PREFIX="$(brew --prefix)"
7373 echo "Detected Homebrew prefix: $BREW_PREFIX"
7474
75+ # Write Info.plist required by gtk-mac-bundler
76+ cat > macos/Info.plist << PLIST
77+ <?xml version="1.0" encoding="UTF-8"?>
78+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
79+ <plist version="1.0">
80+ <dict>
81+ <key>CFBundleIdentifier</key>
82+ <string>io.github.BuddySirJava.SSH-Studio</string>
83+ <key>CFBundleName</key>
84+ <string>SSH Studio</string>
85+ <key>CFBundleExecutable</key>
86+ <string>ssh-studio</string>
87+ <key>CFBundleShortVersionString</key>
88+ <string>1.0.0</string>
89+ <key>CFBundleVersion</key>
90+ <string>1.0.0</string>
91+ <key>CFBundlePackageType</key>
92+ <string>APPL</string>
93+ </dict>
94+ </plist>
95+ PLIST
96+
97+ # Bundle description for gtk-mac-bundler
7598 cat > macos/ssh-studio.bundle << XML
7699 <?xml version="1.0"?>
77100 <app-bundle>
78101 <meta>
79102 <prefix>${BREW_PREFIX}</prefix>
103+ <destination overwrite="yes">${project}/../build/ssh-studio.bundle</destination>
80104 </meta>
81105
82106 <id>io.github.BuddySirJava.SSH-Studio</id>
83107 <name>SSH Studio</name>
84108 <version>1.0.0</version>
85- <icon>data/media/icon_512.png</icon>
109+ <icon>${project}/../ data/media/icon_512.png</icon>
86110
87- <main-binary>
88- <binary>ssh-studio</binary>
111+ <plist>${project}/Info.plist</plist>
112+
113+ <main-binary dest="${bundle}/Contents/MacOS/${name}">
114+ <binary>${project}/../stage/bin/ssh-studio</binary>
89115 </main-binary>
90116
91117 <resources>
92- <file> stage/share/io.github.BuddySirJava.SSH-Studio/ssh-studio-resources.gresource</file>
93- <dir> src</dir>
118+ <file dest="${bundle}/Contents/Resources/share/io.github.BuddySirJava.SSH-Studio/ssh-studio-resources.gresource">${project}/../ stage/share/io.github.BuddySirJava.SSH-Studio/ssh-studio-resources.gresource</file>
119+ <dir dest="${bundle}/Contents/Resources/src">${project}/../ src</dir>
94120 </resources>
95-
96- <dependencies>
97- <dep>gtk4</dep>
98- <dep>libadwaita</dep>
99- <dep>gtksourceview5</dep>
100- <dep>pygobject3</dep>
101- <dep>python3</dep>
102- </dependencies>
103121 </app-bundle>
104122 XML
105123
106- gtk-mac-bundler macos/ssh-studio.bundle
107-
108- - name: Diagnostic: list .app contents
109- run: |
110- set -euxo pipefail
111- ls -R build/ssh-studio.bundle/SSH\ Studio.app/Contents || true
112-
113- - name: Create DMG
114- run: |
115- set -euxo pipefail
116- VER=$(sed -n "s/.*version: '\([^']*\)'.*/\1/p" meson.build | head -n1)
117- ARCH=$(uname -m)
118- mkdir -p dmgroot
119- cp -R "build/ssh-studio.bundle/SSH Studio.app" dmgroot/
120- ln -s /Applications dmgroot/Applications
121- hdiutil create -volname "SSH Studio" -srcfolder dmgroot -ov -fs HFS+ "ssh-studio-${VER}-${ARCH}.dmg"
122-
123- - name: Upload artifact
124- uses: actions/upload-artifact@v4
125- with:
126- name: ssh-studio-dmg-${{ matrix.os }}
127- path: |
128- *.dmg
124+ - name: Run gtk-mac-bundler
125+ run: |
126+ set -euxo pipefail
127+ gtk-mac-bundler macos/ssh-studio.bundle
128+
129+ - name: Diagnostic: list .app contents
130+ run: |
131+ set -euxo pipefail
132+ ls -R build/ssh-studio.bundle/.SSH\ Studio.app/Contents || true
133+
134+ - name : Create DMG
135+ run : |
136+ set -euxo pipefail
137+ VER=$(sed -n "s/.*version: '\([^']*\)'.*/\1/p" meson.build | head -n1)
138+ ARCH=$(uname -m)
139+ mkdir -p dmgroot
140+ cp -R "build/ssh-studio.bundle/.SSH Studio.app" "dmgroot/SSH Studio.app"
141+ ln -s /Applications dmgroot/Applications
142+ hdiutil create -volname "SSH Studio" -srcfolder dmgroot -ov -fs HFS+ "ssh-studio-${VER}-${ARCH}.dmg"
143+
144+ - name : Upload artifact
145+ uses : actions/upload-artifact@v4
146+ with :
147+ name : ssh-studio-dmg-${{ matrix.os }}
148+ path : |
149+ *.dmg
0 commit comments