-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
69 lines (61 loc) · 1.85 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
import core from "@actions/core";
import github from "@actions/github";
const isAdd = (set) => set === "true";
const isRemove = (set) => !isAdd(set);
try {
const oktokit = github.getOctokit(process.env.GITHUB_TOKEN);
const set = core.getInput("set");
const label = core.getInput("label");
console.log(`set: ${set}`);
console.log(`label: "${label}"`);
const prNumber = github.context.payload.pull_request.number;
const hasLabel = async () => {
const labels = await oktokit.request(
"GET /repos/{owner}/{repo}/issues/{issue_number}/labels",
{
...github.context.repo,
issue_number: prNumber,
}
);
const hasLabel = labels.data.some((l) => l.name === label);
console.log(
hasLabel
? `PR #${prNumber} has label ${label}; ${
isRemove(set) ? "proceeding..." : "skip..."
}`
: `PR #${prNumber} does not have label ${label}; ${
isAdd(set) ? "proceeding..." : "skip..."
}`
);
return labels.data.some((l) => l.name === label);
};
const removeLabel = async () => {
console.log(`Removing label "${label}" from PR #${prNumber}`);
if (await hasLabel()) {
await oktokit.request(
"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{label}",
{
...github.context.repo,
issue_number: prNumber,
label,
}
);
}
};
const addLabel = async () => {
console.log(`Adding label "${label}" to PR #${prNumber}`);
if (!(await hasLabel())) {
await oktokit.request(
"POST /repos/{owner}/{repo}/issues/{issue_number}/labels",
{
...github.context.repo,
issue_number: prNumber,
labels: [label],
}
);
}
};
await (set === "true" ? addLabel() : removeLabel());
} catch (error) {
core.setFailed(error.message);
}