mirror of
https://codeberg.org/armin/wavetable.git
synced 2026-09-01 22:10:47 +02:00
38 lines
1.1 KiB
Text
38 lines
1.1 KiB
Text
|
|
#!/bin/bash
|
||
|
|
#
|
||
|
|
# CrashReporter is a SHARED component across all SocaLabs/Rabien plugins, so we
|
||
|
|
# never downgrade it and never remove it. The pkg payload stages the incoming
|
||
|
|
# app under .incoming; here we promote it to the live location only if it is
|
||
|
|
# strictly newer than what's already installed (or nothing is installed yet).
|
||
|
|
#
|
||
|
|
set -e
|
||
|
|
|
||
|
|
BASE="/Library/Application Support/Rabien Software/Crash Reporter"
|
||
|
|
NEW="$BASE/.incoming/CrashReporter.app"
|
||
|
|
LIVE="$BASE/CrashReporter.app"
|
||
|
|
PB="/usr/libexec/PlistBuddy"
|
||
|
|
|
||
|
|
version_of () { # $1 = .app path -> prints CFBundleShortVersionString or 0
|
||
|
|
if [ -d "$1" ]; then
|
||
|
|
"$PB" -c "Print :CFBundleShortVersionString" "$1/Contents/Info.plist" 2>/dev/null || echo 0
|
||
|
|
else
|
||
|
|
echo 0
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
if [ -d "$NEW" ]; then
|
||
|
|
newver="$(version_of "$NEW")"
|
||
|
|
livever="$(version_of "$LIVE")"
|
||
|
|
|
||
|
|
# Promote if nothing installed, or the incoming build is strictly newer.
|
||
|
|
highest="$(printf '%s\n%s\n' "$livever" "$newver" | sort -V | tail -1)"
|
||
|
|
if [ ! -d "$LIVE" ] || { [ "$highest" = "$newver" ] && [ "$newver" != "$livever" ]; }; then
|
||
|
|
rm -rf "$LIVE"
|
||
|
|
mv "$NEW" "$LIVE"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Always clear the staging area.
|
||
|
|
rm -rf "$BASE/.incoming"
|
||
|
|
|
||
|
|
exit 0
|