-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcommitlint.config.js
More file actions
61 lines (59 loc) · 1.79 KB
/
commitlint.config.js
File metadata and controls
61 lines (59 loc) · 1.79 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
const matchAnyEmojiWithSpaceAfter = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])\s/;
const subjectThatDontStartWithBracket = /([^\[].+)/; // "Add tests" but don't allow "[ Add tests"
// TODO: Reintroduce in case it makes sense
// const matchOptionalTicketNumberWithSpaceAfter = /(?:\[(T-\d+)\]\s)?/; // "[T-4605] ", "[T-1]"
module.exports = {
parserPreset: {
parserOpts: {
headerPattern: new RegExp(
"^" +
matchAnyEmojiWithSpaceAfter.source +
// matchOptionalTicketNumberWithSpaceAfter.source +
subjectThatDontStartWithBracket.source +
"$"
),
headerCorrespondence: ["emoji", "ticket", "subject"],
},
},
plugins: [
{
rules: {
"header-match-team-pattern": (parsed) => {
const { emoji, /*ticket,*/ subject } = parsed;
if (emoji === null && /*ticket === null &&*/ subject === null) {
return [
false,
"header must be in format '🚀 Add tests'",
];
}
return [true, ""];
},
"explained-emoji-enum": (parsed, _when, emojisObject) => {
const { emoji } = parsed;
if (emoji && !Object.keys(emojisObject).includes(emoji)) {
return [
false,
`emoji must be one of:
${Object.keys(emojisObject)
.map((emojiType) => `${emojiType} - ${emojisObject[emojiType]}`)
.join("\n")}`,
];
}
return [true, ""];
},
},
},
],
rules: {
"header-match-team-pattern": [2, "always"],
"explained-emoji-enum": [
2,
"always",
{
"🚀": "New feature",
"🐛": "Bug fix",
"🧹": "Miscellaneous",
},
],
},
};