feedBack-desktop/scripts/bundle-soundfont.sh
2026-06-16 18:48:12 +02:00

36 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# Download + verify the default General-MIDI soundfont into
# resources/soundfonts/. Used by both CI and local `npm run bundle` on
# all three platforms.
#
# URL + SHA256 are read from .build-config.json (external.soundfont_general_user).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
CONFIG="$PROJECT_DIR/.build-config.json"
SF_URL=$(python3 "$SCRIPT_DIR/parse-build-config.py" "$CONFIG" .external.soundfont_general_user.url)
SF_SHA256=$(python3 "$SCRIPT_DIR/parse-build-config.py" "$CONFIG" .external.soundfont_general_user.sha256)
SF_DIR="$PROJECT_DIR/resources/soundfonts"
SF_FILE="$SF_DIR/GeneralUser-GS.sf2"
mkdir -p "$SF_DIR"
if [ -f "$SF_FILE" ]; then
echo " Existing soundfont found — verifying checksum"
else
echo " Downloading GeneralUser-GS.sf2 (~32 MB) from $SF_URL"
curl -sL --fail --retry 5 --retry-delay 5 --retry-all-errors "$SF_URL" -o "$SF_FILE"
fi
# macOS ships `shasum -a 256`; Linux / Windows-git-bash ship `sha256sum`.
if command -v sha256sum >/dev/null 2>&1; then
echo "${SF_SHA256} ${SF_FILE}" | sha256sum -c - >/dev/null
else
echo "${SF_SHA256} ${SF_FILE}" | shasum -a 256 -c - >/dev/null
fi
echo " Soundfont: $(ls -lh "$SF_FILE" | awk '{print $5}') (SHA256 verified)"