Skip to main content

max / audiofiles

1.5 KB · 38 lines History Blame Raw
1 // audiofiles, macOS (aarch64) release recipe for Bento.
2 //
3 // audiofiles is an egui app (no Tauri), so it builds through its own
4 // self-contained dist/build-macos.sh: cargo build -p audiofiles-app, assemble
5 // the .app bundle, codesign (Developer ID), notarize (notarytool keychain
6 // profile), staple, and emit dist/Audiofiles_<version>_<arch>.dmg. Runs on mbp
7 // over the in-session ops-agent transport (login.keychain unlocked there). We
8 // re-verify Gatekeeper here and collect the DMG into Bento's dist tree.
9
10 let h = build_host();
11 let v = version();
12 let r = repo();
13
14 step("checkout");
15 sh_ok(h, "cd " + r + " && git pull --ff-only");
16
17 // build-macos.sh: build + sign + notarize + staple, DMG into dist/.
18 // Gate: no artifact is built from code that fails clippy or its tests. It runs
19 // on this target's own build host, so a break confined to one platform is
20 // caught where it would have shipped.
21 step("prebuild");
22 sh_ok(h, "cd " + r + " && cargo clippy --workspace --all-targets " + feature_flags() + " -- -D warnings");
23 sh_ok(h, "cd " + r + " && cargo test --workspace " + feature_flags());
24
25 step("build");
26 sh_ok(h, "cd " + r + " && ./dist/build-macos.sh");
27
28 // DMG name uses `uname -m` (arm64), not the target arch slug, resolve it.
29 step("verify");
30 let dmg = resolve_artifact(h, r + "/dist/Audiofiles_*.dmg");
31 if !verify_gatekeeper(h, dmg) {
32 throw "DMG is not Gatekeeper-accepted as Notarized Developer ID: " + dmg;
33 }
34
35 step("collect");
36 collect(h, dmg, "audiofiles", v);
37 log("audiofiles macOS v" + v + " built, notarized, and collected.");
38