UNPKG

@scaleway/changesets-renovate

Version:

Automatically create changesets for Renovate and pnpm catalogs

49 lines (48 loc) • 1.62 kB
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 };