Skip to content

Commit 71ba59f

Browse files
committed
Add view-changes script
1 parent c08c8de commit 71ba59f

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"publish-release": "node --env-file .env ./scripts/publish-release.js",
1616
"publish-release-ci": "node ./scripts/publish-release.js",
1717
"tag-release": "node ./scripts/tag-release.js",
18-
"test": "pnpm -r --workspace-concurrency 1 test"
18+
"test": "pnpm -r --workspace-concurrency 1 test",
19+
"view-changes": "node ./scripts/view-changes.js"
1920
},
2021
"workspaces": [
2122
"packages/*"

scripts/view-changes.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import * as fs from 'node:fs';
2+
3+
import { getChanges } from './utils/changes.js';
4+
import { getPackageDir, packagesDir } from './utils/packages.js';
5+
6+
let packageName = process.argv[2];
7+
8+
/** @type {(packageName: string) => import('./utils/changes.js').Changes | null} */
9+
function getPackageChanges(packageName) {
10+
let changes = getChanges(packageName, 'HEAD');
11+
12+
if (!changes || !changes.body.trim()) {
13+
return null;
14+
}
15+
16+
return changes;
17+
}
18+
19+
/** @type {(packageName: string, changes: import('./utils/changes.js').Changes) => void} */
20+
function printPackageChanges(packageName, changes) {
21+
console.log(`📦 ${packageName}`);
22+
console.log('─'.repeat(50));
23+
console.log(changes.body);
24+
console.log();
25+
}
26+
27+
if (packageName) {
28+
let dir = getPackageDir(packageName);
29+
30+
if (!fs.existsSync(dir)) {
31+
console.error(`Error: Package "${packageName}" not found in ./packages`);
32+
process.exit(1);
33+
}
34+
35+
let changes = getPackageChanges(packageName);
36+
37+
if (changes) {
38+
printPackageChanges(packageName, changes);
39+
} else {
40+
console.log(`No pending changes found for package "${packageName}"`);
41+
console.log();
42+
}
43+
} else {
44+
let packages = fs.readdirSync(packagesDir).filter((name) => {
45+
let dir = getPackageDir(name);
46+
return fs.existsSync(dir) && fs.statSync(dir).isDirectory();
47+
});
48+
49+
let hasChanges = false;
50+
51+
packages.forEach((pkg) => {
52+
let changes = getPackageChanges(pkg);
53+
if (changes) {
54+
hasChanges = true;
55+
printPackageChanges(pkg, changes);
56+
}
57+
});
58+
59+
if (!hasChanges) {
60+
console.log('No packages have pending changes');
61+
console.log();
62+
}
63+
}

0 commit comments

Comments
 (0)