@@ -8,8 +8,13 @@ ARCH="$(uname -m)"
88ROOT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) /.." && pwd) "
99DIST_DIR=" $ROOT_DIR /dist"
1010APP_BUNDLE_PATH=" $DIST_DIR /${APP_NAME} .app"
11- ZIP_NAME=" ${APP_NAME} -${TAG} -macos-${ARCH} .zip"
12- ZIP_PATH=" $DIST_DIR /$ZIP_NAME "
11+ DMG_NAME=" ${APP_NAME} -${TAG} -macos-${ARCH} .dmg"
12+ DMG_PATH=" $DIST_DIR /$DMG_NAME "
13+ DMG_STAGING_DIR=" $DIST_DIR /.dmg-staging"
14+ ICON_SOURCE=" $ROOT_DIR /openwispr.png"
15+ ICONSET_DIR=" $DIST_DIR /.AppIcon.iconset"
16+ ICON_FILE_NAME=" AppIcon.icns"
17+ CHECKSUM_PATH=" $DMG_PATH .sha256"
1318
1419BUNDLE_VERSION=" ${TAG# v} "
1520if [[ ! " $BUNDLE_VERSION " =~ ^[0-9]+ (\. [0-9]+)* $ ]]; then
@@ -25,13 +30,31 @@ if [[ ! -x "$BIN_PATH" ]]; then
2530 exit 1
2631fi
2732
33+ if [[ ! -f " $ICON_SOURCE " ]]; then
34+ echo " missing icon source: $ICON_SOURCE " >&2
35+ exit 1
36+ fi
37+
2838echo " [package] creating app bundle"
2939rm -rf " $APP_BUNDLE_PATH "
30- mkdir -p " $APP_BUNDLE_PATH /Contents/MacOS"
40+ mkdir -p " $APP_BUNDLE_PATH /Contents/MacOS" " $APP_BUNDLE_PATH /Contents/Resources "
3141
3242cp " $BIN_PATH " " $APP_BUNDLE_PATH /Contents/MacOS/$APP_NAME "
3343chmod +x " $APP_BUNDLE_PATH /Contents/MacOS/$APP_NAME "
3444
45+ echo " [package] generating app icon"
46+ rm -rf " $ICONSET_DIR "
47+ mkdir -p " $ICONSET_DIR "
48+
49+ for size in 16 32 128 256 512; do
50+ sips -s format png -z " $size " " $size " " $ICON_SOURCE " --out " $ICONSET_DIR /icon_${size} x${size} .png" > /dev/null
51+ doubled_size=" $(( size * 2 )) "
52+ sips -s format png -z " $doubled_size " " $doubled_size " " $ICON_SOURCE " --out " $ICONSET_DIR /icon_${size} x${size} @2x.png" > /dev/null
53+ done
54+
55+ iconutil -c icns " $ICONSET_DIR " -o " $APP_BUNDLE_PATH /Contents/Resources/$ICON_FILE_NAME "
56+ rm -rf " $ICONSET_DIR "
57+
3558cat > " $APP_BUNDLE_PATH /Contents/Info.plist" << EOF
3659<?xml version="1.0" encoding="UTF-8"?>
3760<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@@ -45,6 +68,8 @@ cat > "$APP_BUNDLE_PATH/Contents/Info.plist" <<EOF
4568 <string>OpenWispr</string>
4669 <key>CFBundleIdentifier</key>
4770 <string>io.github.tnfssc.openwispr</string>
71+ <key>CFBundleIconFile</key>
72+ <string>AppIcon</string>
4873 <key>CFBundlePackageType</key>
4974 <string>APPL</string>
5075 <key>CFBundleShortVersionString</key>
@@ -61,12 +86,19 @@ cat > "$APP_BUNDLE_PATH/Contents/Info.plist" <<EOF
6186</plist>
6287EOF
6388
64- echo " [package] zipping app bundle "
89+ echo " [package] building dmg "
6590mkdir -p " $DIST_DIR "
66- rm -f " $ZIP_PATH " " $ZIP_PATH .sha256"
67- ditto -c -k --sequesterRsrc --keepParent " $APP_BUNDLE_PATH " " $ZIP_PATH "
68- shasum -a 256 " $ZIP_PATH " > " $ZIP_PATH .sha256"
91+ rm -rf " $DMG_STAGING_DIR "
92+ mkdir -p " $DMG_STAGING_DIR "
93+
94+ cp -R " $APP_BUNDLE_PATH " " $DMG_STAGING_DIR /"
95+ ln -s /Applications " $DMG_STAGING_DIR /Applications"
96+
97+ rm -f " $DMG_PATH " " $CHECKSUM_PATH "
98+ hdiutil create -volname " $APP_NAME " -srcfolder " $DMG_STAGING_DIR " -ov -format UDZO " $DMG_PATH " > /dev/null
99+ shasum -a 256 " $DMG_PATH " > " $CHECKSUM_PATH "
100+ rm -rf " $DMG_STAGING_DIR "
69101
70102echo " [package] created artifact"
71- echo " $ZIP_PATH "
72- echo " $ZIP_PATH .sha256 "
103+ echo " $DMG_PATH "
104+ echo " $CHECKSUM_PATH "
0 commit comments