33 lines
1.3 KiB
TypeScript
33 lines
1.3 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google LLC All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
|
|
import * as semver from 'semver';
|
|
|
|
import {ReleaseConfig} from '../config/index';
|
|
|
|
import {ActiveReleaseTrains} from './active-release-trains';
|
|
import {semverInc} from './inc-semver';
|
|
import {isVersionPublishedToNpm} from './npm-registry';
|
|
|
|
/** Computes the new pre-release version for the next release-train. */
|
|
export async function computeNewPrereleaseVersionForNext(
|
|
active: ActiveReleaseTrains, config: ReleaseConfig): Promise<semver.SemVer> {
|
|
const {version: nextVersion} = active.next;
|
|
const isNextPublishedToNpm = await isVersionPublishedToNpm(nextVersion, config);
|
|
// Special-case where the version in the `next` release-train is not published yet. This
|
|
// happens when we recently branched off for feature-freeze. We already bump the version to
|
|
// the next minor or major, but do not publish immediately. Cutting a release immediately would
|
|
// be not helpful as there are no other changes than in the feature-freeze branch. If we happen
|
|
// to detect this case, we stage the release as usual but do not increment the version.
|
|
if (isNextPublishedToNpm) {
|
|
return semverInc(nextVersion, 'prerelease');
|
|
} else {
|
|
return nextVersion;
|
|
}
|
|
}
|