mirror of
https://github.com/Kaelio/ktx.git
synced 2026-07-22 11:51:01 +02:00
fix: derive runtime versions from release metadata
This commit is contained in:
parent
1c30abc51d
commit
8aea27bfbe
18 changed files with 231 additions and 50 deletions
|
|
@ -9,6 +9,8 @@ export const PUBLIC_NPM_RELEASE_TAGS = new Set(['latest', 'next']);
|
|||
|
||||
const SEMVER_PATTERN =
|
||||
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
||||
const SEMVER_PARTS_PATTERN =
|
||||
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
||||
|
||||
function scriptRootDir() {
|
||||
return resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
||||
|
|
@ -29,6 +31,30 @@ export function assertPublicNpmPackageVersion(version) {
|
|||
return version;
|
||||
}
|
||||
|
||||
export function publicNpmPackageVersionToPythonVersion(version) {
|
||||
const safeVersion = assertPublicNpmPackageVersion(version);
|
||||
const match = SEMVER_PARTS_PATTERN.exec(safeVersion);
|
||||
if (!match) {
|
||||
throw new Error(`Invalid public npm package version: ${version}`);
|
||||
}
|
||||
|
||||
const [, major, minor, patch, prerelease, buildMetadata] = match;
|
||||
if (buildMetadata) {
|
||||
throw new Error(`Unsupported public npm build metadata for Python runtime version: ${safeVersion}`);
|
||||
}
|
||||
|
||||
const baseVersion = `${major}.${minor}.${patch}`;
|
||||
if (!prerelease) {
|
||||
return baseVersion;
|
||||
}
|
||||
|
||||
const rcMatch = /^rc\.([1-9]\d*|0)$/.exec(prerelease);
|
||||
if (!rcMatch) {
|
||||
throw new Error(`Unsupported public npm prerelease for Python runtime version: ${safeVersion}`);
|
||||
}
|
||||
return `${baseVersion}rc${rcMatch[1]}`;
|
||||
}
|
||||
|
||||
export function assertPublicNpmReleaseTag(tag) {
|
||||
if (!PUBLIC_NPM_RELEASE_TAGS.has(tag)) {
|
||||
throw new Error(`Invalid public npm release tag: ${tag}`);
|
||||
|
|
@ -51,3 +77,7 @@ export function readPublicNpmReleaseMetadata(rootDir = scriptRootDir()) {
|
|||
export function publicNpmPackageVersion(rootDir = scriptRootDir()) {
|
||||
return readPublicNpmReleaseMetadata(rootDir).version;
|
||||
}
|
||||
|
||||
export function publicPythonRuntimePackageVersion(rootDir = scriptRootDir()) {
|
||||
return publicNpmPackageVersionToPythonVersion(publicNpmPackageVersion(rootDir));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue