@scaleway/changesets-renovate
Version:
Automatically create changesets for Renovate and pnpm catalogs
39 lines (38 loc) • 1.11 kB
JavaScript
import { readFile } from "node:fs/promises";
import fg from "fast-glob";
import "js-yaml";
const { globSync } = fg;
function shouldIgnorePackage(packageName, ignoredPackages) {
return ignoredPackages.some((ignoredPackage) => {
if (ignoredPackage.endsWith("*")) {
return packageName.startsWith(ignoredPackage.slice(0, -1));
}
return packageName === ignoredPackage;
});
}
async function getChangesetIgnoredPackages() {
const changesetConfig = JSON.parse(
await readFile(".changeset/config.json", "utf8")
);
return changesetConfig.ignore ?? [];
}
async function getPackagesNames(files) {
const ignoredPackages = await getChangesetIgnoredPackages();
const packages = [];
const promises = files.map(async (file) => {
const data = JSON.parse(await readFile(file, "utf8"));
if (shouldIgnorePackage(data.name, ignoredPackages)) {
return;
}
if (!data.workspaces && data.version) {
packages.push(data.name);
}
});
await Promise.all(promises);
return packages;
}
export {
getChangesetIgnoredPackages,
getPackagesNames,
shouldIgnorePackage
};