Stagger build numbers by platform: iOS/watch even, macOS odd

Both platforms share one App Store Connect build-number space (same
bundle ID, universal purchase), so the raw commit count would collide.
The vendored script partitions on PLATFORM_NAME; watchOS rides with iOS
because the embedded watch app's CFBundleVersion must match its host.
This commit is contained in:
2026-07-16 20:14:23 -04:00
parent 62ca446136
commit 47a49cc356
3 changed files with 104 additions and 5 deletions
+11 -4
View File
@@ -28,12 +28,19 @@ packages:
url: https://git.rzen.dev/rzen/indie-backup.git
from: "2.0.0"
# Shared post-build phase — stamps CFBundleVersion (git commit count), BuildDate, and
# BuildHash into each target's (and dSYM's) Info.plist. Aliased into every code-bearing
# target below so the app, watch app, and both widget extensions stamp identical metadata.
# Shared post-build phase — stamps CFBundleVersion, BuildDate, and BuildHash into each
# target's (and dSYM's) Info.plist. Vendored at Scripts/update_build_info.sh (not the
# shared indie-skills copy) because the iOS app and Workouts Mac share ONE App Store
# Connect record (dev.rzen.indie.Workouts, universal purchase), so both stamping the
# raw commit count would collide on upload. The script partitions the space instead:
# iOS + watchOS targets get an EVEN CFBundleVersion (commit-count*2), the Mac target
# gets ODD (commit-count*2+1) — derived from PLATFORM_NAME inside the script, so this
# one anchor still serves all five code-bearing targets unmodified. watchOS is grouped
# with iOS (not given its own parity) because the embedded watch app's CFBundleVersion
# must match its host iOS app's exactly.
scriptAnchors:
updateBuildInfo: &updateBuildInfo
- script: '"${SRCROOT}/../indie-skills/skills/app-versioning/scripts/update_build_info.sh"'
- script: '"${SRCROOT}/Scripts/update_build_info.sh"'
name: Update Build Info
shell: /bin/sh
basedOnDependencyAnalysis: false