@scaleway/changesets-renovate 2.0.3 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -1,72 +1,102 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
import { simpleGit
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import { simpleGit } from "simple-git";
|
|
4
|
+
console.debug("simpleGit", simpleGit);
|
|
5
|
+
async function getChangesetIgnoredPackages() {
|
|
6
|
+
const changesetConfig = JSON.parse(
|
|
7
|
+
await fs.readFile(".changeset/config.json", "utf8")
|
|
8
|
+
);
|
|
9
|
+
return changesetConfig.ignore ?? [];
|
|
8
10
|
}
|
|
9
|
-
function
|
|
10
|
-
return
|
|
11
|
+
function shouldIgnorePackage(packageName, ignoredPackages) {
|
|
12
|
+
return ignoredPackages.some((ignoredPackage) => {
|
|
13
|
+
if (ignoredPackage.endsWith("*")) {
|
|
14
|
+
return packageName.startsWith(ignoredPackage.slice(0, -1));
|
|
15
|
+
}
|
|
16
|
+
return packageName === ignoredPackage;
|
|
17
|
+
});
|
|
11
18
|
}
|
|
12
|
-
async function
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
async function getPackagesNames(files) {
|
|
20
|
+
const ignoredPackages = await getChangesetIgnoredPackages();
|
|
21
|
+
const packages = [];
|
|
22
|
+
const promises = files.map(async (file) => {
|
|
23
|
+
const data = JSON.parse(await fs.readFile(file, "utf8"));
|
|
24
|
+
if (shouldIgnorePackage(data.name, ignoredPackages)) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!data.workspaces && data.version) {
|
|
28
|
+
packages.push(data.name);
|
|
29
|
+
}
|
|
16
30
|
});
|
|
17
|
-
|
|
31
|
+
await Promise.all(promises);
|
|
32
|
+
return packages;
|
|
18
33
|
}
|
|
19
|
-
async function
|
|
20
|
-
let
|
|
21
|
-
for (const [
|
|
22
|
-
|
|
34
|
+
async function createChangeset(fileName, packageBumps, packages) {
|
|
35
|
+
let message = "";
|
|
36
|
+
for (const [pkg, bump] of packageBumps) {
|
|
37
|
+
message += `Updated dependency \`${pkg}\` to \`${bump}\`.
|
|
23
38
|
`;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
39
|
+
}
|
|
40
|
+
const pkgs = packages.map((pkg) => `'${pkg}': patch`).join("\n");
|
|
41
|
+
const body = `---
|
|
42
|
+
${pkgs}
|
|
27
43
|
---
|
|
28
44
|
|
|
29
|
-
${
|
|
45
|
+
${message.trim()}
|
|
30
46
|
`;
|
|
31
|
-
await
|
|
47
|
+
await fs.writeFile(fileName, body);
|
|
32
48
|
}
|
|
33
|
-
async function
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (
|
|
39
|
-
const
|
|
40
|
-
|
|
49
|
+
async function getBumps(files) {
|
|
50
|
+
const bumps = /* @__PURE__ */ new Map();
|
|
51
|
+
const promises = files.map(async (file) => {
|
|
52
|
+
const changes = await simpleGit().show([file]);
|
|
53
|
+
for (const change of changes.split("\n")) {
|
|
54
|
+
if (change.startsWith("+ ")) {
|
|
55
|
+
const match = change.match(/"(.*?)"/g);
|
|
56
|
+
if (match?.[0] && match[1]) {
|
|
57
|
+
bumps.set(match[0].replace(/"/g, ""), match[1].replace(/"/g, ""));
|
|
58
|
+
}
|
|
41
59
|
}
|
|
60
|
+
}
|
|
42
61
|
});
|
|
43
|
-
|
|
62
|
+
await Promise.all(promises);
|
|
63
|
+
return bumps;
|
|
44
64
|
}
|
|
45
|
-
async function
|
|
46
|
-
const
|
|
47
|
-
|
|
65
|
+
async function run() {
|
|
66
|
+
const branch = await simpleGit().branch();
|
|
67
|
+
console.log("Detected branch:", branch);
|
|
68
|
+
if (!branch.current.startsWith("renovate/")) {
|
|
48
69
|
console.log("Not a renovate branch, skipping");
|
|
49
70
|
return;
|
|
50
71
|
}
|
|
51
|
-
const
|
|
52
|
-
|
|
72
|
+
const diffOutput = await simpleGit().diffSummary(["--name-only", "HEAD~1"]);
|
|
73
|
+
const diffFiles = diffOutput.files.map((file) => file.file);
|
|
74
|
+
console.log("Found changed files:", diffFiles);
|
|
75
|
+
if (diffFiles.find((f) => f.startsWith(".changeset"))) {
|
|
53
76
|
console.log("Changeset already exists, skipping");
|
|
54
77
|
return;
|
|
55
78
|
}
|
|
56
|
-
const
|
|
57
|
-
if (!
|
|
79
|
+
const files = diffFiles.filter((file) => file.includes("package.json"));
|
|
80
|
+
if (!files.length) {
|
|
58
81
|
console.log("No package.json changes to published packages, skipping");
|
|
59
82
|
return;
|
|
60
83
|
}
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
84
|
+
const packageNames = await getPackagesNames(files);
|
|
85
|
+
if (packageNames.length === 0) {
|
|
63
86
|
console.log("No packages modified, skipping");
|
|
64
87
|
return;
|
|
65
88
|
}
|
|
66
|
-
const
|
|
67
|
-
|
|
89
|
+
const shortHash = (await simpleGit().revparse(["--short", "HEAD"])).trim();
|
|
90
|
+
const fileName = `.changeset/renovate-${shortHash}.md`;
|
|
91
|
+
const packageBumps = await getBumps(files);
|
|
92
|
+
await createChangeset(fileName, packageBumps, packageNames);
|
|
93
|
+
if (!process.env["SKIP_COMMIT"]) {
|
|
94
|
+
await simpleGit().add(fileName);
|
|
95
|
+
await simpleGit().commit(`chore: add changeset renovate-${shortHash}`);
|
|
96
|
+
await simpleGit().push();
|
|
97
|
+
}
|
|
68
98
|
}
|
|
69
|
-
|
|
99
|
+
run().catch(console.error);
|
|
70
100
|
export {
|
|
71
|
-
|
|
101
|
+
run
|
|
72
102
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scaleway/changesets-renovate",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
4
|
"description": "Automatically create changesets for Renovate",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -39,10 +39,13 @@
|
|
|
39
39
|
"simple-git": "3.24.0"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
|
+
"prebuild": "shx rm -rf dist",
|
|
42
43
|
"typecheck": "tsc --noEmit",
|
|
43
44
|
"type:generate": "tsc --declaration -p tsconfig.build.json",
|
|
44
45
|
"build": "vite build --config vite.config.ts && pnpm run type:generate",
|
|
45
46
|
"build:profile": "npx vite-bundle-visualizer -c vite.config.ts",
|
|
46
|
-
"lint": "eslint --report-unused-disable-directives --cache --cache-strategy content --ext ts,tsx ."
|
|
47
|
+
"lint": "eslint --report-unused-disable-directives --cache --cache-strategy content --ext ts,tsx .",
|
|
48
|
+
"test:unit": "vitest --run --config vite.config.ts",
|
|
49
|
+
"test:unit:coverage": "pnpm test:unit --coverage"
|
|
47
50
|
}
|
|
48
51
|
}
|