@scaleway/changesets-renovate
Version:
Automatically create changesets for Renovate and pnpm catalogs
49 lines (48 loc) ⢠1.62 kB
JavaScript
import { simpleGit } from "simple-git";
import { createChangeset } from "./createChangeset.js";
const {
findChangedDependenciesFromGit,
findAffectedPackages,
handleChangesetFile
} = await import("./git-utils.js");
async function handleCatalogChanges(diffFiles) {
const workspaceFiles = diffFiles.filter(
(file) => file.includes("pnpm-workspace.yaml")
);
if (workspaceFiles.length === 0) {
return;
}
console.log(
"š Detected pnpm workspace changes, checking for catalog updates..."
);
console.log("š Comparing catalogs: HEAD~1 -> HEAD");
const changedDeps = await findChangedDependenciesFromGit(
"HEAD~1",
"HEAD",
"pnpm-workspace.yaml"
);
if (changedDeps.size === 0) {
console.log("ā
No catalog dependency changes.", { changedDeps });
return;
}
console.log("š¦ Changed dependencies:", changedDeps);
const affectedPackages = await findAffectedPackages([...changedDeps.keys()]);
if (affectedPackages.size === 0) {
console.log("š¦ No packages affected by catalog changes.");
return;
}
console.log("\nš Affected packages:");
for (const pkg of affectedPackages) {
console.log(` - ${pkg}`);
}
console.log("\nāļø Creating changesets...");
const packageNames = [...affectedPackages.keys()];
const shortHash = (await simpleGit().revparse(["--short", "HEAD"])).trim();
const fileName = `.changeset/renovate-${shortHash}.md`;
await createChangeset(fileName, changedDeps, packageNames);
await handleChangesetFile(fileName);
console.log("\nā
Done creating changesets.");
}
export {
handleCatalogChanges
};