forked from DataLinkDC/dinky
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathissue.js
85 lines (77 loc) · 1.94 KB
/
issue.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
84
85
const Octokit = require('@octokit/core');
const octokit = new Octokit.Octokit({
auth: process.env.GITHUB_TOKEN || process.env.GITHUB_AUTH,
});
const queryIssue = ({ title, id }) => {
return octokit
.request('GET /search/issues', {
q: title,
per_page: 5,
})
.then(({ data }) => {
const list = data.items
.map((item) => {
return {
title: item.title,
url: item.html_url,
id: item.id,
};
})
.filter((item) => {
return item.id !== id;
});
if (list.length > 0) {
return `
> Issue Robot generation
### 以下的issue可能会帮助到你 :
${list
.map((item) => {
return `* [${item.title}](${item.url})`;
})
.join('\n')}`;
}
return null;
})
.then(async (markdown) => {
return markdown;
});
};
const findIssue = async (issueId) => {
const { data } = await octokit.request('GET /repos/{owner}/{repo}/issues/{issue_number}', {
owner: 'ant-design',
repo: 'ant-design-pro',
issue_number: issueId,
});
return data;
};
const closeIssue = async (issueId) => {
await octokit.request('PATCH /repos/{owner}/{repo}/issues/{issue_number}', {
owner: 'ant-design',
repo: 'ant-design-pro',
issue_number: issueId,
state: 'closed',
});
};
const replyCommit = async (issueId, markdown) => {
await octokit.request('POST /repos/{owner}/{repo}/issues/{issue_number}/comments', {
owner: 'ant-design',
repo: 'ant-design-pro',
issue_number: issueId,
body: markdown,
});
};
const reply = async () => {
const issueId = process.env.ISSUE_NUMBER;
const issue = await findIssue(issueId);
if (!issue.title || issue.title.length < 12) {
replyCommit(issueId, '**请写标题!**');
closeIssue(issueId);
return;
}
const markdown = await queryIssue({
title: issue.title,
id: issue.id,
});
replyCommit(issueId, markdown);
};
reply();