ReviewOS

also looking at this

stacks/bumpx

fix: synchronize drifted native versions in recursive releases

#2015
Merged chris wants to merge codex/recursive-native-version-drift into main
2 files +26 -2
packages/bumpx/src/utils.tsmodified+6-2
Changes to packages/bumpx/src/utils.ts
@@ -413,8 +413,11 @@ export function updateVersionInFile(filePath: string, oldVersion: string, newVer
413413 if (isZigZon) {
414414 // Handle Zig build.zig.zon files
415415 // Format: .version = "0.0.0",
416 const declaredVersion = forceUpdate
417 ? content.match(/\.version\s*=\s*"([^"]+)"/)?.[1] ?? oldVersion
418 : oldVersion
416419 const versionRegex = new RegExp(
417 `(\\.version\\s*=\\s*")${oldVersion.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}("\\s*,)`,
420 `(\\.version\\s*=\\s*")${declaredVersion.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}("\\s*,)`,
418421 'g',
419422 )
420423 if (content.match(versionRegex) || forceUpdate) {
@@ -433,6 +436,7 @@ export function updateVersionInFile(filePath: string, oldVersion: string, newVer
433436 }
434437
435438 const packageJson = JSON.parse(jsonContent)
439 const declaredVersion = forceUpdate ? String(packageJson.version) : oldVersion
436440 if (packageJson.version === oldVersion || forceUpdate) {
437441 packageJson.version = newVersion
438442
@@ -440,7 +444,7 @@ export function updateVersionInFile(filePath: string, oldVersion: string, newVer
440444 if (isJsonc) {
441445 // Replace the version value while preserving comments and formatting
442446 const versionRegex = new RegExp(
443 `(["']version["']\\s*:\\s*)["']${oldVersion.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}["']`,
447 `(["']version["']\\s*:\\s*)["']${declaredVersion.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}["']`,
444448 'g',
445449 )
446450 newContent = content.replace(versionRegex, `$1"${newVersion}"`)