-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvalidate.js
More file actions
67 lines (57 loc) · 1.19 KB
/
validate.js
File metadata and controls
67 lines (57 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const allowedTypes = [
"feat",
"fix",
"chore",
"docs",
"style",
"refactor",
"perf",
"test",
"ci",
"revert",
];
const allowedSubTypes = [
"build",
"log",
"core",
"ilp",
"http",
"conf",
"utils",
];
const errorMessage = `
Please update the PR title to match this format:
\`type(subType): description\`
Where \`type\` is one of:
${allowedTypes.map((t) => `\`${t}\``).join(", ")}
And: \`subType\` is one of:
${allowedSubTypes.map((t) => `\`${t}\``).join(", ")}
For Example:
\`\`\`
perf(sql): improve pattern matching performance for SELECT sub-queries
\`\`\`
`.trim();
/* The basic valid PR title formats are:
* 1. allowedType(allowedSubtype): optional description
* 2. allowedType: optional description
*
* consult ./validate.test.js for a full list
* */
const prTitleRegex = new RegExp(
`^(((?:${allowedTypes.join("|")})\\((?:${allowedSubTypes.join(
"|",
)})\\))|build): .*`,
);
function validate({ title, onError }) {
// Early return for title that matches predefined regex.
// No action required in such case.
if (title.match(prTitleRegex)) {
return;
}
onError(errorMessage);
}
module.exports = {
allowedTypes,
allowedSubTypes,
validate,
};