diff --git a/cli/release_publish.php b/cli/release_publish.php index 094ec5a..939194c 100644 --- a/cli/release_publish.php +++ b/cli/release_publish.php @@ -243,61 +243,21 @@ if (!$dryRun) { echo "[DRY-RUN] Would build and upload {$releaseVersion} to {$releaseTag}\n"; } -// -- Step 4: Build separate packages for all lesser stability streams -- -// Each stream gets its own ZIP with the correct version INSIDE templateDetails.xml. -// Joomla reads version from the ZIP after install, so it must match. -echo "\n--- Step 4: Build packages for lesser streams ---\n"; -for ($i = 0; $i < $stabilityIndex; $i++) { - $lesserStability = $allStabilities[$i]; - $lesserTag = $releaseTagMap[$lesserStability]; - $lesserVersion = $baseVersion . $suffixMap[$lesserStability]; +// -- Step 4: No lesser stream copies -- +// Joomla picks the HIGHEST version across ALL entries via version_compare(). +// Since dev < alpha < beta < rc < stable, lesser stream copies at the same +// base version would never be selected by sites at lower stability levels. +// Each stream updates independently: dev via auto-bump, rc via promote-rc, +// stable via release. The dev stream naturally gets a higher patch after +// auto-bump runs on the recreated dev branch (e.g. 02.17.01-dev > 02.17.00). +echo "\n--- Step 4: Skipped (no lesser stream copies) ---\n"; - echo " Building {$lesserStability} release: {$lesserVersion}\n"; - - if (!$dryRun) { - // Set version to lesser stream's suffixed version in source files - passthru("{$php} {$cli}/version_set_platform.php --path " . escapeshellarg($path) - . " --version " . escapeshellarg($baseVersion) - . " --branch " . escapeshellarg($lesserStability) - . " --stability " . escapeshellarg($lesserStability) . " 2>/dev/null"); - - // Create release tag - passthru("{$php} {$cli}/release_create.php --path " . escapeshellarg($path) - . " --version " . escapeshellarg($lesserVersion) - . " --tag " . escapeshellarg($lesserTag) - . " --token " . escapeshellarg($token) - . " --api-base " . escapeshellarg($apiBase) - . " --repo " . escapeshellarg($repo) - . " --branch " . escapeshellarg($branch) . " 2>&1"); - - // Build and upload package (ZIP will contain the lesser version) - passthru("{$php} {$cli}/release_package.php --path " . escapeshellarg($path) - . " --version " . escapeshellarg($lesserVersion) - . " --tag " . escapeshellarg($lesserTag) - . " --token " . escapeshellarg($token) - . " --api-base " . escapeshellarg($apiBase) - . " --repo " . escapeshellarg($repo) - . " --output /tmp 2>&1"); - } else { - echo " [DRY-RUN] Would build {$lesserVersion} ZIP and upload to {$lesserTag}\n"; - } -} - -// Restore primary release version in source files -if (!$dryRun && $stabilityIndex > 0) { - passthru("{$php} {$cli}/version_set_platform.php --path " . escapeshellarg($path) - . " --version " . escapeshellarg($baseVersion) - . " --branch " . escapeshellarg($branch) - . " --stability " . escapeshellarg($stability) . " 2>/dev/null"); -} - -// -- Step 5: Update ALL streams in updates.xml -- -echo "\n--- Step 5: Update updates.xml for ALL streams ---\n"; -// Write entry for the primary stream and all lesser streams -$streamsToWrite = array_slice($allStabilities, 0, $stabilityIndex + 1); +// -- Step 5: Update ONLY this stream in updates.xml -- +echo "\n--- Step 5: Update {$stability} stream in updates.xml ---\n"; +$streamsToWrite = [$stability]; foreach ($streamsToWrite as $stream) { - $streamVersion = $baseVersion . $suffixMap[$stream]; + $streamVersion = $releaseVersion; $shaFlag = !empty($sha256) ? "--sha {$sha256}" : ''; echo " Writing {$stream} stream: {$streamVersion}\n";