Skip to content

Commit 3f002b9

Browse files
Ecursoragent
authored andcommitted
CI: install plugins to user Library (~/Library/Audio/Plug-Ins)
- Payload staged under /tmp; postinstall copies to console user's ~/Library/Audio/Plug-Ins/Components and ~/Library/Audio/Plug-Ins/VST3 - No admin write to /Library for plugins Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 01acb20 commit 3f002b9

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

.github/workflows/release-plugins.yml

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,29 @@ jobs:
8282
cd release-artefacts && zip -r "AceForgeBridge-macOS-AU-VST3.zip" "AceForge Bridge.component" "AceForge Bridge.vst3" && cd ..
8383
echo "Plugin bundles signed; zip created."
8484
85-
- name: Prepare pkg payload
85+
- name: Prepare pkg payload and postinstall script
8686
run: |
87-
mkdir -p payload/Library/Audio/Plug-Ins/Components
88-
mkdir -p payload/Library/Audio/Plug-Ins/VST3
89-
cp -R "release-artefacts/AceForge Bridge.component" "payload/Library/Audio/Plug-Ins/Components/"
90-
cp -R "release-artefacts/AceForge Bridge.vst3" "payload/Library/Audio/Plug-Ins/VST3/"
87+
STAGING="payload/tmp/aceforge_bridge_payload"
88+
mkdir -p "$STAGING/Components" "$STAGING/VST3"
89+
cp -R "release-artefacts/AceForge Bridge.component" "$STAGING/Components/"
90+
cp -R "release-artefacts/AceForge Bridge.vst3" "$STAGING/VST3/"
91+
mkdir -p pkg-scripts
92+
cat > pkg-scripts/postinstall << 'POSTINSTALL'
93+
#!/bin/bash
94+
set -e
95+
CONSOLE_USER=$(stat -f '%Su' /dev/console 2>/dev/null || echo "")
96+
[ -z "$CONSOLE_USER" ] && CONSOLE_USER=$(logname 2>/dev/null || true)
97+
[ -z "$CONSOLE_USER" ] && CONSOLE_USER=$(who | awk '{print $1}' | head -1)
98+
TARGET_BASE="/Users/$CONSOLE_USER/Library/Audio/Plug-Ins"
99+
STAGING_ROOT="/tmp/aceforge_bridge_payload"
100+
if [ -d "$STAGING_ROOT" ] && [ -n "$CONSOLE_USER" ] && [ "$CONSOLE_USER" != "root" ]; then
101+
mkdir -p "$TARGET_BASE/Components" "$TARGET_BASE/VST3"
102+
[ -d "$STAGING_ROOT/Components" ] && cp -R "$STAGING_ROOT/Components/"* "$TARGET_BASE/Components/" 2>/dev/null || true
103+
[ -d "$STAGING_ROOT/VST3" ] && cp -R "$STAGING_ROOT/VST3/"* "$TARGET_BASE/VST3/" 2>/dev/null || true
104+
rm -rf "$STAGING_ROOT"
105+
fi
106+
POSTINSTALL
107+
chmod +x pkg-scripts/postinstall
91108

92109
- name: Build macOS installer (.pkg)
93110
run: |
@@ -96,8 +113,9 @@ jobs:
96113
--identifier com.aceforge.bridge \
97114
--version 0.1.0 \
98115
--install-location / \
116+
--scripts pkg-scripts \
99117
release-artefacts/AceForgeBridge-macOS-Installer.pkg
100-
echo "Installer places AU in /Library/Audio/Plug-Ins/Components and VST3 in /Library/Audio/Plug-Ins/VST3"
118+
echo "Installer copies plugins to ~/Library/Audio/Plug-Ins/Components and ~/Library/Audio/Plug-Ins/VST3 (current user)"
101119
102120
# Sign the .pkg so macOS doesn't show "unidentified developer". Use Developer ID Installer cert.
103121
- name: Codesign installer (.pkg)

0 commit comments

Comments
 (0)