forked from mristin/opinionated-commit-message
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmainImpl.ts
129 lines (106 loc) · 2.95 KB
/
mainImpl.ts
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import * as core from '@actions/core';
import * as commitMessages from './commitMessages';
import * as inspection from './inspection';
import * as represent from './represent';
import * as input from './input';
async function runWithExceptions(): Promise<void> {
////
// Parse inputs
////
const additionalVerbsInput = core.getInput('additional-verbs', {
required: false,
});
const pathToAdditionalVerbsInput = core.getInput('path-to-additional-verbs', {
required: false,
});
const allowOneLinersInput = core.getInput('allow-one-liners', {
required: false,
});
const maxSubjectLengthInput = core.getInput('max-subject-line-length', {
required: false,
});
const minBodyLengthInput = core.getInput('min-body-length', {
required: false,
});
const maxBodyLineLengthInput = core.getInput('max-body-line-length', {
required: false,
});
const enforceSignOffInput = core.getInput('enforce-sign-off', {
required: false,
});
const validatePullRequestCommitsInput = core.getInput(
'validate-pull-request-commits',
{
required: false,
},
);
const skipBodyCheckInput = core.getInput('skip-body-check', {
required: false,
});
const ignoreMergeCommitsInput = core.getInput('ignore-merge-commits', {
required: false,
});
const ignorePatternsInput = core.getInput('ignore-patterns', {
required: false,
});
const maybeInputs = input.parseInputs({
additionalVerbsInput,
pathToAdditionalVerbsInput,
allowOneLinersInput,
maxSubjectLengthInput,
minBodyLengthInput,
maxBodyLineLengthInput,
enforceSignOffInput,
validatePullRequestCommitsInput,
skipBodyCheckInput,
ignoreMergeCommitsInput,
ignorePatternsInput,
});
if (maybeInputs.error !== null) {
core.error(maybeInputs.error);
core.setFailed(maybeInputs.error);
return;
}
const inputs = maybeInputs.mustInputs();
const messages: string[] = await commitMessages.retrieve(
inputs,
core.getInput('github-token', {required: false}),
);
////
// Inspect
////
// Parts of the error message to be concatenated with '\n'
const parts: string[] = [];
for (const [messageIndex, message] of messages.entries()) {
const errors = inspection.check(message, inputs);
if (errors.length > 0) {
const repr: string = represent.formatErrors(
message,
messageIndex,
errors,
);
parts.push(repr);
} else {
core.info(`The message is OK:\n---\n${message}\n---`);
}
}
const errorMessage = parts.join('\n');
if (errorMessage.length > 0) {
core.setFailed(errorMessage);
}
}
/**
* Main function
*/
export async function run(): Promise<void> {
return runWithExceptions().catch(error => {
if (error instanceof Error) {
core.error(error);
core.setFailed(error.message);
} else {
const message = `Unexpected error value: ${error}`;
core.error(message);
core.setFailed(message);
}
});
}