-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathindex.js
83 lines (78 loc) · 2.27 KB
/
index.js
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
const core = require('@actions/core')
const github = require('@actions/github')
try {
// Core Input
const githubToken = core.getInput('GITHUB_TOKEN', {required: true})
const eventType = core.getInput('EVENT_TYPE', {required: true})
const branch = core.getInput('BRANCHES')
const message = core.getInput('MESSAGE')
const author = core.getInput('AUTHOR')
// Github context
const headAuthor = github.context.actor
const pullRequest = github.context.payload.pull_request
const prNumber = pullRequest.number
const headBranch = pullRequest.head.ref
if (!pullRequest) {
core.setFailed(
`This action isn't pull requests.Please run this action on: pull_request`,
)
process.exit(1)
}
if (
(eventType === 'COMMENT' || eventType === 'REQUEST_CHANGES') &&
!message
) {
core.setFailed(
`EVENT_TYPE is a COMMENT or REQUEST_CHANGES required a MESSAGE.`,
)
process.exit(1)
}
const resultBranch = new RegExp(branch, 'g').test(headBranch)
if (resultBranch) {
// Branches equal input
pullRequestReviews({
token: githubToken,
prNumber: prNumber,
message: message,
eventType: eventType,
})
} else {
// Regex check
const arrayAuthor = author.split(',')
for (let index = 0; index < arrayAuthor.length; index++) {
if (arrayAuthor[index].trim() === headAuthor) {
pullRequestReviews({
token: githubToken,
prNumber: prNumber,
message: message,
eventType: eventType,
})
break
}
if (index === arrayAuthor.length - 1) {
core.warning('BRANCHES or AUTHOR not found at input')
}
}
}
} catch (err) {
core.error(err)
core.setFailed(err.message)
}
async function pullRequestReviews({token, prNumber, message, eventType}) {
try {
const octokit = github.getOctokit(token)
const response = await octokit.rest.pulls.createReview({
owner: github.context.repo.owner,
repo: github.context.repo.repo,
pull_number: prNumber,
body: message,
event: eventType,
})
core.info(
`Review created successfully. Response: ${JSON.stringify(response.data)}`,
)
} catch (error) {
core.error(`Error creating review: ${error.message}`)
core.setFailed(error.message)
}
}