MCPcopy Create free account
hub / github.com/remix-run/react-router / main

Function main

scripts/changes/pr.ts:53–173  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

51let maxBodyLength = 60_000;
52
53async function main() {
54 console.log(preview ? "🔍 PREVIEW MODE\n" : "");
55
56 // Parse and validate changes
57 console.log("Validating change files...");
58 let result = parseAllChangeFiles();
59
60 if (!result.valid) {
61 console.error("Validation errors found:");
62 for (let error of result.errors) {
63 console.error(` ${error.packageDirName}/${error.file}: ${error.error}`);
64 }
65 process.exit(1);
66 }
67
68 let { releases } = result;
69
70 let pkgJson = readJson(getPackageFile("react-router", "package.json"));
71 let majorVersion = semver.major(releases[0]?.nextVersion ?? pkgJson.version);
72 let prBranchPrefix = baseBranch === "hotfix" ? "hotfix" : "release";
73 let prBranch = `${prBranchPrefix}-v${majorVersion}-pr`;
74
75 if (releases.length === 0) {
76 console.log("No pending changes to release.");
77
78 // Check if there's a stale PR that should be closed
79 if (!preview && process.env.GITHUB_TOKEN) {
80 let existingPr = await findOpenPr(prBranch, baseBranch);
81 if (existingPr) {
82 console.log(`\nClosing stale PR #${existingPr.number}...`);
83 await closePr(
84 existingPr.number,
85 "Closing automatically — all change files have been removed or released.",
86 );
87 console.log(`✅ Closed PR: ${existingPr.html_url}`);
88 }
89 }
90
91 process.exit(0);
92 }
93
94 console.log(
95 `\nFound ${releases.length} package${releases.length === 1 ? "" : "s"} with changes:`,
96 );
97 for (let release of releases) {
98 console.log(
99 ` • ${release.packageName}: ${release.currentVersion} → ${release.nextVersion}`,
100 );
101 }
102 console.log();
103
104 // Generate content
105 let commitMessage = generateCommitMessage(releases);
106 let prTitle = `${baseBranch === "hotfix" ? "Hotfix Release" : "Release"} v${releases[0].nextVersion}`;
107 let prBody = generatePrBody(releases);
108
109 if (preview) {
110 console.log("Would create/update PR with:");

Callers 1

pr.tsFile · 0.70

Calls 15

parseAllChangeFilesFunction · 0.90
readJsonFunction · 0.90
getPackageFileFunction · 0.90
findOpenPrFunction · 0.90
closePrFunction · 0.90
generateCommitMessageFunction · 0.90
logAndExecFunction · 0.90
updatePrFunction · 0.90
createPrFunction · 0.90
addPrLabelsFunction · 0.90
generatePrBodyFunction · 0.85
getErrorMessageFunction · 0.85

Tested by

no test coverage detected