#!/bin/bash
set -euo pipefail
source &#34;$(dirname &#34;$0&#34;)/build_config.sh&#34;

echo &#34;=== Starting DMG build ===&#34;

mkdir -p &#34;$RELEASES&#34;
rm -f &#34;$DMG_NAME&#34;

WRAPPER=&#34;$APP_ROOT/DMGWrapper&#34;
APP_FOLDER=&#34;$WRAPPER/MyApp&#34;

rm -rf &#34;$WRAPPER&#34;
mkdir -p &#34;$APP_FOLDER&#34;

echo &#34;=== Cleaning runtime ===&#34;
find &#34;$APP_ROOT&#34; -name &#34;.DS_Store&#34; -delete
find &#34;$APP_ROOT&#34; -name &#34;__MACOSX&#34; -prune -exec rm -rf {} +
find &#34;$APP_ROOT&#34; -name &#34;*.log&#34; -delete
find &#34;$APP_ROOT&#34; -name &#34;*.tmp&#34; -delete

echo &#34;=== Copying runtime ===&#34;
cp -R &#34;$APP_ROOT&#34;/* &#34;$APP_FOLDER/&#34;

WRAPPED_APP=&#34;$APP_FOLDER/MyApp.app&#34;

echo &#34;=== Injecting plugin ===&#34;
PLUGIN_SRC=&#34;$APP_ROOT/Extensions/PluginA.fmplugin&#34;
PLUGIN_DEST=&#34;$APP_FOLDER/Extensions&#34;

mkdir -p &#34;$PLUGIN_DEST&#34;
cp -R &#34;$PLUGIN_SRC&#34; &#34;$PLUGIN_DEST/&#34;

echo &#34;=== Signing app bundle ===&#34;
codesign --force --deep --options runtime --sign &#34;$DEVELOPER_ID_APP&#34; &#34;$WRAPPED_APP&#34;

echo &#34;=== Verifying signature ===&#34;
codesign --verify --deep --strict --verbose=4 &#34;$WRAPPED_APP&#34;

xattr -cr &#34;$WRAPPER&#34;

WIDTH=500
HEIGHT=333

TEMP_DMG=&#34;$DMG_NAME.temp.dmg&#34;
MOUNT_POINT=&#34;/Volumes/$VOL_NAME&#34;

cleanup() {
    hdiutil detach &#34;$MOUNT_POINT&#34; &gt;/dev/null 2&gt;&amp;1 || true
}
trap cleanup EXIT

echo &#34;=== Creating temporary DMG ===&#34;
rm -f &#34;$TEMP_DMG&#34;

if mount | grep -q &#34;$MOUNT_POINT&#34;; then
    hdiutil detach &#34;$MOUNT_POINT&#34; &gt;/dev/null 2&gt;&amp;1 || true
fi

hdiutil create -size 800m -fs HFS+ -volname &#34;$VOL_NAME&#34; &#34;$TEMP_DMG&#34;
hdiutil attach &#34;$TEMP_DMG&#34; -mountpoint &#34;$MOUNT_POINT&#34;

sleep 1

mdutil -i off &#34;$MOUNT_POINT&#34; &gt;/dev/null 2&gt;&amp;1 || true

echo &#34;=== Copying files ===&#34;
cp -R &#34;$WRAPPER&#34;/* &#34;$MOUNT_POINT/&#34;

cp &#34;/path/to/README.txt&#34; &#34;$MOUNT_POINT/README.txt&#34;
cp &#34;/path/to/EULA.txt&#34; &#34;$MOUNT_POINT/EULA.txt&#34;

echo &#34;=== Adding Applications symlink ===&#34;
ln -s /Applications &#34;$MOUNT_POINT/Applications&#34;

echo &#34;=== Setting background ===&#34;
mkdir &#34;$MOUNT_POINT/.background&#34;
cp &#34;/path/to/DMG_Background.png&#34; &#34;$MOUNT_POINT/.background/DMG_Background.png&#34;

SetFile -a C &#34;$MOUNT_POINT&#34;

echo &#34;=== Finder layout ===&#34;
osascript &lt; &#34;${DMG_NAME}.sha256&#34;
echo &#34;$SHA512  $DMG_NAME&#34; &gt; &#34;${DMG_NAME}.sha512&#34;

{
    echo &#34;MyApp $APP_VERSION&#34;
    echo &#34;SHA‑256: $SHA256&#34;
    echo &#34;SHA‑512: $SHA512&#34;
} &gt; &#34;${DMG_NAME}.checksums.txt&#34;

echo &#34;=== Build complete ===&#34;
