2024-01-01 14:58:21 -05:00
|
|
|
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2023-03-13 14:59:13 -04:00
|
|
|
const prTitle = Deno.args[0];
|
|
|
|
|
|
|
|
if (prTitle == null) {
|
|
|
|
Deno.exit(0); // not a PR
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log("PR title:", prTitle);
|
|
|
|
|
|
|
|
// This is a release PR, so it's valid.
|
|
|
|
if (/^[^\s]+\.[^\s]+\.[^\s]+$/.test(prTitle)) {
|
|
|
|
console.log("Valid.");
|
|
|
|
Deno.exit(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
const validPrefixes = [
|
|
|
|
"chore",
|
|
|
|
"fix",
|
|
|
|
"feat",
|
|
|
|
"perf",
|
|
|
|
"ci",
|
|
|
|
"cleanup",
|
|
|
|
"docs",
|
|
|
|
"bench",
|
|
|
|
"build",
|
|
|
|
"refactor",
|
|
|
|
"test",
|
|
|
|
// allow Revert PRs because it allows us to remove the landed
|
|
|
|
// commit from the generated changelog
|
|
|
|
"Revert ",
|
2023-03-18 17:15:45 -04:00
|
|
|
// allow Reland PRs because when editing the changelog, it helps us identify
|
|
|
|
// commits that were reverted, but then relanded
|
|
|
|
"Reland ",
|
2023-03-16 18:42:29 -04:00
|
|
|
// Allow landing breaking changes that are properly marked
|
|
|
|
"BREAKING",
|
2024-03-24 20:15:12 -04:00
|
|
|
// Allow landing breaking changes that will be applied in Deno 2, or available
|
|
|
|
// immediately with DENO_FUTURE=1 env var
|
|
|
|
"FUTURE",
|
2023-03-13 14:59:13 -04:00
|
|
|
];
|
|
|
|
|
|
|
|
if (validPrefixes.some((prefix) => prTitle.startsWith(prefix))) {
|
|
|
|
console.log("Valid.");
|
|
|
|
} else {
|
|
|
|
console.error(
|
|
|
|
"The PR title must start with one of the following prefixes:\n",
|
|
|
|
);
|
|
|
|
for (const prefix of validPrefixes) {
|
|
|
|
console.error(` - ${prefix}`);
|
|
|
|
}
|
|
|
|
console.error(
|
|
|
|
"\nPlease fix the PR title according to https://www.conventionalcommits.org " +
|
|
|
|
"then push an empty commit to reset the CI.",
|
|
|
|
);
|
|
|
|
Deno.exit(1);
|
|
|
|
}
|