From ddca5d2f6680f37e67733d6c9f5a76aa0cd759a8 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Tue, 19 Mar 2024 16:36:51 +0100 Subject: [PATCH] Change package name if moved Signed-off-by: Philipp Hugenroth --- packages/cli/src/commands/versions/bump.ts | 33 +++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/commands/versions/bump.ts b/packages/cli/src/commands/versions/bump.ts index d64d5a9756..a995f07745 100644 --- a/packages/cli/src/commands/versions/bump.ts +++ b/packages/cli/src/commands/versions/bump.ts @@ -372,26 +372,39 @@ export function createVersionFinder(options: { releaseManifest?.packages.map(p => [p.name, p.version]), ); return async function findTargetVersion(name: string) { - const existing = found.get(name); + let _name = name; + const existing = found.get(_name); if (existing) { return existing; } - console.log(`Checking for updates of ${name}`); - const manifestVersion = releasePackages.get(name); + console.log(`Checking for updates of ${_name}`); + + const manifestVersion = releasePackages.get(_name); if (manifestVersion) { return manifestVersion; } - const info = await packageInfoFetcher(name); + // TODO: Properly fix inacurate typing here... + const info = (await packageInfoFetcher(_name)) as YarnInfoInspectData & { + backstage?: { moved?: string }; + }; + + if ( + info.backstage?.moved && + info.backstage.moved.startsWith('@backstage-community/') + ) { + _name = info.backstage.moved; + } + const latestVersion = info['dist-tags'].latest; if (!latestVersion) { - throw new Error(`No target 'latest' version found for ${name}`); + throw new Error(`No target 'latest' version found for ${_name}`); } const taggedVersion = info['dist-tags'][distTag]; if (distTag === 'latest' || !taggedVersion) { - found.set(name, latestVersion); + found.set(_name, latestVersion); return latestVersion; } @@ -399,12 +412,12 @@ export function createVersionFinder(options: { const taggedVersionDateStr = info.time[taggedVersion]; if (!latestVersionDateStr) { throw new Error( - `No time available for version '${latestVersion}' of ${name}`, + `No time available for version '${latestVersion}' of ${_name}`, ); } if (!taggedVersionDateStr) { throw new Error( - `No time available for version '${taggedVersion}' of ${name}`, + `No time available for version '${taggedVersion}' of ${_name}`, ); } @@ -412,11 +425,11 @@ export function createVersionFinder(options: { const taggedVersionRelease = new Date(taggedVersionDateStr).getTime(); if (latestVersionRelease > taggedVersionRelease) { // Prefer latest version if it's newer. - found.set(name, latestVersion); + found.set(_name, latestVersion); return latestVersion; } - found.set(name, taggedVersion); + found.set(_name, taggedVersion); return taggedVersion; }; }