@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 p from "./_virtual/__vite-browser-external.js";
3
- import { simpleGit as c } from "simple-git";
4
- async function f() {
5
- return JSON.parse(
6
- await p.readFile(".changeset/config.json", "utf8")
7
- ).ignore ?? [];
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 l(t, o) {
10
- return o.some((e) => e.endsWith("*") ? t.startsWith(e.slice(0, -1)) : t === e);
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 h(t) {
13
- const o = await f(), e = [], s = t.map(async (i) => {
14
- const a = JSON.parse(await p.readFile(i, "utf8"));
15
- l(a.name, o) || !a.workspaces && a.version && e.push(a.name);
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
- return await Promise.all(s), e;
31
+ await Promise.all(promises);
32
+ return packages;
18
33
  }
19
- async function u(t, o, e) {
20
- let s = "";
21
- for (const [n, g] of o)
22
- s += `Updated dependency \`${n}\` to \`${g}\`.
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
- const a = `---
25
- ${e.map((n) => `'${n}': patch`).join(`
26
- `)}
39
+ }
40
+ const pkgs = packages.map((pkg) => `'${pkg}': patch`).join("\n");
41
+ const body = `---
42
+ ${pkgs}
27
43
  ---
28
44
 
29
- ${s.trim()}
45
+ ${message.trim()}
30
46
  `;
31
- await p.writeFile(t, a);
47
+ await fs.writeFile(fileName, body);
32
48
  }
33
- async function m(t) {
34
- const o = /* @__PURE__ */ new Map(), e = t.map(async (s) => {
35
- const i = await c().show([s]);
36
- for (const a of i.split(`
37
- `))
38
- if (a.startsWith("+ ")) {
39
- const n = a.match(/"(.*?)"/g);
40
- n?.[0] && n[1] && o.set(n[0].replace(/"/g, ""), n[1].replace(/"/g, ""));
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
- return await Promise.all(e), o;
62
+ await Promise.all(promises);
63
+ return bumps;
44
64
  }
45
- async function d() {
46
- const t = await c().branch();
47
- if (console.log("Detected branch:", t), !t.current.startsWith("renovate/")) {
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 e = (await c().diffSummary(["--name-only", "HEAD~1"])).files.map((r) => r.file);
52
- if (console.log("Found changed files:", e), e.find((r) => r.startsWith(".changeset"))) {
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 s = e.filter((r) => r.includes("package.json"));
57
- if (!s.length) {
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 i = await h(s);
62
- if (i.length === 0) {
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 a = (await c().revparse(["--short", "HEAD"])).trim(), n = `.changeset/renovate-${a}.md`, g = await m(s);
67
- await u(n, g, i), process.env.SKIP_COMMIT || (await c().add(n), await c().commit(`chore: add changeset renovate-${a}`), await c().push());
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
- d().catch(console.error);
99
+ run().catch(console.error);
70
100
  export {
71
- d as run
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",
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
  }
@@ -1,4 +0,0 @@
1
- const s = {};
2
- export {
3
- s as default
4
- };