@scaleway/changesets-renovate
Version:
Automatically create changesets for Renovate and pnpm catalogs
29 lines (28 loc) ⢠1.46 kB
JavaScript
import { createChangeset } from "./createChangeset.js";
import { simpleGit } from "simple-git";
var { findChangedDependenciesFromGit, findAffectedPackages, handleChangesetFile } = await import("./git-utils.js");
async function handleCatalogChanges(diffFiles) {
if (diffFiles.filter((file) => file.includes("pnpm-workspace.yaml")).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 fileName = `.changeset/renovate-${(await simpleGit().revparse(["--short", "HEAD"])).trim()}.md`;
await createChangeset(fileName, changedDeps, packageNames);
await handleChangesetFile(fileName);
console.log("\nā
Done creating changesets.");
}
export { handleCatalogChanges };