2021-05-21 19:59:44 +03:00
|
|
|
import semverParse from 'semver/functions/parse';
|
|
|
|
|
import SemVer from 'semver/classes/semver';
|
|
|
|
|
|
|
|
|
|
export function isStableSemverVersion(version: SemVer): boolean {
|
2023-03-08 10:50:45 +02:00
|
|
|
return version.prerelease.length === 0;
|
2021-05-21 19:59:44 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getMajorTagFromFullTag(fullTag: string): string {
|
2023-03-08 10:50:45 +02:00
|
|
|
return fullTag.split('.')[0];
|
2021-05-21 19:59:44 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function validateSemverVersionFromTag(tag: string): void {
|
2023-03-08 10:50:45 +02:00
|
|
|
const semverVersion = semverParse(tag);
|
|
|
|
|
if (!semverVersion) {
|
|
|
|
|
throw new Error(
|
|
|
|
|
`The '${tag}' doesn't satisfy semantic versioning specification`
|
|
|
|
|
);
|
|
|
|
|
}
|
2021-05-21 19:59:44 +03:00
|
|
|
|
2023-03-08 10:50:45 +02:00
|
|
|
if (!isStableSemverVersion(semverVersion)) {
|
|
|
|
|
throw new Error(
|
|
|
|
|
'It is not allowed to specify pre-release version to update the major tag'
|
|
|
|
|
);
|
|
|
|
|
}
|
2021-05-21 19:59:44 +03:00
|
|
|
}
|