diff --git a/package.json b/package.json index 827173de..868bfa6d 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "generate:map": "tsx scripts/generateClientTypesMap", "generate:tests": "tsx scripts/generateNewClientTests", "lint": "biome lint --write", - "release": "tsx scripts/testChangedPackageNames && npm run build && changeset publish", + "release": "tsx scripts/testUpdatedIdentifiers && npm run build && changeset publish", "test": "vitest", "version": "changeset version && npm i --package-lock-only" }, diff --git a/scripts/testChangedPackageNames/index.ts b/scripts/testChangedPackageNames/index.ts deleted file mode 100644 index 1eebc8fa..00000000 --- a/scripts/testChangedPackageNames/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { exec } from "node:child_process"; -import { mkdtemp } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; -import { promisify } from "node:util"; -import { CLIENT_PACKAGE_NAMES_MAP as PACKAGE_NAMES_MAP_TO_PUBLISH } from "../../src/transforms/v2-to-v3/config"; - -const execAsync = promisify(exec); - -(async () => { - // Create temporary directory - const tempDir = await mkdtemp(join(tmpdir(), "testChangedPackageNames-")); - await execAsync("npm install aws-sdk-js-codemod@latest", { cwd: tempDir }); - - const { CLIENT_PACKAGE_NAMES_MAP: PACKAGE_NAMES_MAP_LATEST } = await import( - join(tempDir, "node_modules/aws-sdk-js-codemod/dist/transforms/v2-to-v3/config") - ); - - const changedPackageNames = Object.keys(PACKAGE_NAMES_MAP_TO_PUBLISH) - .filter((key) => PACKAGE_NAMES_MAP_TO_PUBLISH[key] !== PACKAGE_NAMES_MAP_LATEST[key]) - .map((key) => PACKAGE_NAMES_MAP_TO_PUBLISH[key]); - - console.log(`Changed package names: ${changedPackageNames.join(", ")}`); - for (const packageName of changedPackageNames) { - const npmPackageName = `@aws-sdk/${packageName}`; - await execAsync(`npm show ${npmPackageName} version`); - console.log(`${npmPackageName} exists`); - } -})(); diff --git a/scripts/testUpdatedIdentifiers/index.ts b/scripts/testUpdatedIdentifiers/index.ts new file mode 100644 index 00000000..948df084 --- /dev/null +++ b/scripts/testUpdatedIdentifiers/index.ts @@ -0,0 +1,52 @@ +import { exec } from "node:child_process"; +import { mkdtemp } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { promisify } from "node:util"; +import { + CLIENT_NAMES_MAP as CLIENT_NAMES_MAP_TO_PUBLISH, + CLIENT_PACKAGE_NAMES_MAP as PACKAGE_NAMES_MAP_TO_PUBLISH, +} from "../../src/transforms/v2-to-v3/config"; + +const execAsync = promisify(exec); + +(async () => { + // Create temporary directory + const tempDirCodemod = await mkdtemp(join(tmpdir(), "codemod-")); + await execAsync("npm install aws-sdk-js-codemod@latest", { cwd: tempDirCodemod }); + + const { CLIENT_NAMES_MAP, CLIENT_PACKAGE_NAMES_MAP } = await import( + join(tempDirCodemod, "node_modules/aws-sdk-js-codemod/dist/transforms/v2-to-v3/config") + ); + + const changedPackages = Object.entries(PACKAGE_NAMES_MAP_TO_PUBLISH).filter( + ([key]) => PACKAGE_NAMES_MAP_TO_PUBLISH[key] !== CLIENT_PACKAGE_NAMES_MAP[key] + ); + + const changedPackageNames = Object.values(changedPackages); + console.log(`Changed package names: [ ${changedPackageNames.join(", ")} ]`); + for (const packageName of changedPackageNames) { + const npmPackageName = `@aws-sdk/${packageName}`; + await execAsync(`npm show ${npmPackageName} version`); + console.log(`${npmPackageName} exists`); + } + + const changedClients = Object.entries(CLIENT_NAMES_MAP_TO_PUBLISH).filter( + ([key]) => CLIENT_NAMES_MAP_TO_PUBLISH[key] !== CLIENT_NAMES_MAP[key] + ); + + console.log(`Changed clients: [ ${changedClients.map(([, value]) => value).join(", ")} ]`); + for (const [clientKey, clientName] of changedClients) { + const npmPackageName = `@aws-sdk/${PACKAGE_NAMES_MAP_TO_PUBLISH[clientKey]}`; + const tempDirClient = await mkdtemp(join(tmpdir(), "codemod-")); + + const execOptions = { cwd: tempDirClient }; + await execAsync(`npm install ${npmPackageName}`, execOptions); + await execAsync( + `echo 'import { ${clientName} } from "${npmPackageName}"' > index.mjs`, + execOptions + ); + await execAsync("node index.mjs", execOptions); + console.log(`Client '${clientName}' exists in '${npmPackageName}'.`); + } +})();