Skip to content

Commit cdad40a

Browse files
Merge pull request #14 from SystangoTechnologies/fix-issue
Improvement: It would be great to have a custom message on failure #8
2 parents 0ed1da8 + 222038a commit cdad40a

File tree

3 files changed

+41
-16
lines changed

3 files changed

+41
-16
lines changed

README.md

+8
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ You would need to add a configuration folder named `.github` at the root of your
2020
```
2121
PR_TITLE_REGEX: <PR Title Regex>
2222
COMMIT_MESSAGE_REGEX: <Commit Message Regex>
23+
OUTPUT_TITLE_FAIL: Message validation failed!!!
24+
OUTPUT_TITLE_SUCCESS: Message validation passed!!!
25+
VALID_COMMIT_MESSAGE: Commit messages are valid
26+
INVALID_COMMIT_MESSAGE: Commit messages are invalid
27+
SINGLE_OTHER_INVALID_MESSAGE: other message is invalid
28+
MULTIPLE_OTHER_INVALID_MESSAGE: other messages are invalid
29+
VALID_PULL_REQUEST_MESSAGE: Pull request title is valid
30+
INVALID_PULL_REQUEST_MESSAGE: Pull request title is invalid
2331
```
2432

2533
## Usage

controllers/pullRequest.js

+28-16
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ const conclusionStatus = constants.conclusion_status;
1717
const messages = constants.messages;
1818
const checkRunStatusCompleted = constants.CHECK_RUN_STATUS_COMPLETED;
1919
const checkRunName = constants.CHECK_RUN_NAME;
20-
const outputTitleSuccess = constants.output_title_success;
21-
const outputTitleFail = constants.output_title_fail;
20+
let outputTitleSuccess = constants.output_title_success;
21+
let outputTitleFail = constants.output_title_fail;
2222

2323
/**
2424
* Commit messages and PR title Validator
@@ -72,7 +72,7 @@ module.exports.commitAndTitleValidator = async (app, context, configuration, upd
7272
pullRequestTitle = pullRequestDetails.data.title;
7373
}
7474
}
75-
let result = checkMessagesFormat(pullRequestTitle, commits.data, prTitleRegex, commitTitleRegex);
75+
let result = checkMessagesFormat(pullRequestTitle, commits.data, prTitleRegex, commitTitleRegex, configuration);
7676
await createOrUpdateCheckRun(context, owner, repository, result, updateCheckRunFlag, createCheckRunFlag);
7777
} catch (error) {
7878
console.log('------error------', error);
@@ -87,26 +87,27 @@ module.exports.commitAndTitleValidator = async (app, context, configuration, upd
8787
* @param {String} prTitleRegex
8888
* @param {String} commitMsgRegex
8989
*/
90-
function checkMessagesFormat(pullRequestTitle, commits, prTitleRegex, commitMsgRegex) {
90+
function checkMessagesFormat(pullRequestTitle, commits, prTitleRegex, commitMsgRegex, configuration) {
9191
try {
92+
const commitMsgStatusMsg = configuration.VALID_COMMIT_MESSAGE || messages.valid_commit_message;
9293
let result = {};
9394
let commitIds = [];
9495
let flags = {
9596
pullReqTitleStatus: false,
9697
pullReqTitleStatusMsg: '',
9798
commitMsgStatus: true,
98-
commitMsgStatusMsg: messages.valid_commit_message,
99+
commitMsgStatusMsg,
99100
invalidCommits: '',
100101
invalidCommitsCount: 0,
101102
otherInvalidCommitMessages: ''
102103
};
103-
checkPrTitle(pullRequestTitle, prTitleRegex, flags);
104+
checkPrTitle(pullRequestTitle, prTitleRegex, flags, configuration);
104105
if (commits && Array.isArray(commits) && commits.length) {
105106
/**
106107
* Check all commit messages
107108
*/
108-
checkCommitMessages(commits, commitIds, commitMsgRegex, mergeCommitRegex, flags);
109-
result = concludeCheckRunParams(prTitleRegex, commitMsgRegex, commitIds, flags);
109+
checkCommitMessages(commits, commitIds, commitMsgRegex, mergeCommitRegex, flags, configuration);
110+
result = concludeCheckRunParams(prTitleRegex, commitMsgRegex, commitIds, flags, configuration);
110111
}
111112
return result;
112113
} catch (error) {
@@ -120,19 +121,22 @@ function checkMessagesFormat(pullRequestTitle, commits, prTitleRegex, commitMsgR
120121
* @param {String} prTitleRegex
121122
* @param {Object} flags
122123
*/
123-
function checkPrTitle(pullRequestTitle, prTitleRegex, flags) {
124+
function checkPrTitle(pullRequestTitle, prTitleRegex, flags, configuration) {
124125
/**
125126
* Check pull request title format
126127
*/
128+
const validPullRequestMessage = configuration.VALID_PULL_REQUEST_MESSAGE || messages.valid_pull_request_message;
129+
const invalidPullRequestMessage = configuration.INVALID_PULL_REQUEST_MESSAGE || messages.invalid_pull_request_message;
130+
127131
if (checkRegex(pullRequestTitle, prTitleRegex)) {
128132
flags.pullReqTitleStatus = true;
129-
flags.pullReqTitleStatusMsg = messages.valid_pull_request_message;
133+
flags.pullReqTitleStatusMsg = validPullRequestMessage;
130134
} else {
131135
/**
132136
* Invalid pull Request title
133137
*/
134138
flags.pullReqTitleStatus = false;
135-
flags.pullReqTitleStatusMsg = messages.invalid_pull_request_message;
139+
flags.pullReqTitleStatusMsg = invalidPullRequestMessage;
136140
}
137141
}
138142

@@ -144,24 +148,28 @@ function checkPrTitle(pullRequestTitle, prTitleRegex, flags) {
144148
* @param {String} mergeCommitRegex
145149
* @param {Object} flags
146150
*/
147-
function checkCommitMessages(commits, commitIds, commitMsgRegex, mergeCommitRegex, flags) {
151+
function checkCommitMessages(commits, commitIds, commitMsgRegex, mergeCommitRegex, flags, configuration) {
148152
/**
149153
* Check all commit messages
150154
*/
155+
const commitMsgStatusMsg = configuration.INVALID_COMMIT_MESSAGE || messages.invalid_commit_message;
156+
const singleOtherInvalidMessage = configuration.SINGLE_OTHER_INVALID_MESSAGE || messages.single_other_invalid_message;
157+
const multipleOtherInvalidMessage = configuration.MULTIPLE_OTHER_INVALID_MESSAGE || messages.multiple_other_invalid_message;
158+
151159
for (let index = 0; index < commits.length; index++) {
152160
const element = commits[index];
153161
const commitMessage = element.commit.message;
154162
commitIds.push(commits[index].sha);
155163
if (!checkRegex(commitMessage, commitMsgRegex) && !checkRegex(commitMessage, mergeCommitRegex)) {
156164
flags.invalidCommitsCount++;
157165
flags.commitMsgStatus = false;
158-
flags.commitMsgStatusMsg = messages.invalid_commit_message;
166+
flags.commitMsgStatusMsg = commitMsgStatusMsg;
159167
if (flags.invalidCommitsCount <= constants.INVALID_COMMIT_LIMIT) {
160168
flags.invalidCommits += `${constants.invalid_commit_list.commit_id} ${commits[index].sha} | ${constants.invalid_commit_list.commit_message} ${commitMessage} <br/>`;
161169
if (flags.invalidCommitsCount === 1) {
162-
flags.otherInvalidCommitMessages = messages.single_other_invalid_message;
170+
flags.otherInvalidCommitMessages = singleOtherInvalidMessage;
163171
} else {
164-
flags.otherInvalidCommitMessages = messages.multiple_other_invalid_message;
172+
flags.otherInvalidCommitMessages = multipleOtherInvalidMessage;
165173
}
166174
}
167175
}
@@ -175,9 +183,13 @@ function checkCommitMessages(commits, commitIds, commitMsgRegex, mergeCommitRege
175183
* @param {Array} commitIds
176184
* @param {Object} flags
177185
*/
178-
function concludeCheckRunParams(prTitleRegex, commitMsgRegex, commitIds, flags) {
186+
function concludeCheckRunParams(prTitleRegex, commitMsgRegex, commitIds, flags, configuration) {
179187
let checkRunParams = {};
180188
let output = {};
189+
outputTitleFail = configuration.OUTPUT_TITLE_FAIL || outputTitleFail;
190+
outputTitleSuccess = configuration.OUTPUT_TITLE_SUCCESS || outputTitleFail;
191+
console.log('outputTitleFail', outputTitleFail)
192+
console.log('outputTitleSuccess', outputTitleSuccess)
181193
let outputTitle = outputTitleFail;
182194
let conclusion = conclusionStatus.FAILURE;
183195
/**

index.js

+5
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ module.exports = async app => {
3232
const configuration = await context.config(configFileName);
3333
await commitAndTitleValidator(app, context, configuration, false, true);
3434
} catch (error) {
35+
console.log('Error while performing operation in Event PULL_REQUEST_OPEN', error);
3536
app.log(error);
3637
}
3738
});
@@ -43,6 +44,7 @@ module.exports = async app => {
4344
const configuration = await context.config(configFileName);
4445
await commitAndTitleValidator(app, context, configuration, true, false);
4546
} catch (error) {
47+
console.log('Error while performing operation in Event CHECK_RUN_REREQUESTED', error);
4648
app.log(error);
4749
}
4850
});
@@ -58,6 +60,7 @@ module.exports = async app => {
5860
const configuration = await context.config(configFileName);
5961
await commitAndTitleValidator(app, context, configuration, true, false);
6062
} catch (error) {
63+
console.log('Error while performing operation in Event CHECK_SUITE_REREQUESTED', error);
6164
app.log(error);
6265
}
6366
});
@@ -69,6 +72,7 @@ module.exports = async app => {
6972
const configuration = await context.config(configFileName);
7073
await commitAndTitleValidator(app, context, configuration, false, true);
7174
} catch (error) {
75+
console.log('Error while performing operation in Event CHECK_SUITE_REQUESTED', error);
7276
app.log(error);
7377
}
7478
});
@@ -78,6 +82,7 @@ module.exports = async app => {
7882
const configuration = await context.config(configFileName);
7983
await commitAndTitleValidator(app, context, configuration, false, true);
8084
} catch (error) {
85+
console.log('Error while performing operation in Event CHECK_SUITE', error);
8186
app.log(error);
8287
}
8388
});

0 commit comments

Comments
 (0)