frontend
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
const fetch = require('node-fetch');
|
||||
|
||||
const REPO = process.env.ACCESS_REPO;
|
||||
const TOKEN = process.env.ACCESS_TOKEN;
|
||||
const PR = process.env.SYSTEM_PULLREQUEST_PULLREQUESTNUMBER;
|
||||
const argv = process.argv;
|
||||
const tag = argv[argv.length - 2];
|
||||
const comment = argv[argv.length - 1];
|
||||
const REPLACE_MARK = `<!-- AZURE_UPDATE_COMMENT_${tag} -->`;
|
||||
|
||||
const wrappedComment = `
|
||||
${REPLACE_MARK}
|
||||
${comment}
|
||||
`.trim();
|
||||
|
||||
async function withGithub(url, json, method) {
|
||||
const res = await fetch(url, {
|
||||
method: method || (json ? 'POST' : 'GET'),
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Basic ${Buffer.from(TOKEN).toString('base64')}`,
|
||||
},
|
||||
body: json ? JSON.stringify(json) : undefined,
|
||||
});
|
||||
|
||||
return res.json();
|
||||
}
|
||||
|
||||
(async function run() {
|
||||
if (PR == null) {
|
||||
console.log('未获取到PR,忽略处理')
|
||||
return;
|
||||
}
|
||||
|
||||
const comments = await withGithub(`https://api.github.com/repos/${REPO}/issues/${PR}/comments`);
|
||||
|
||||
// Find my comment
|
||||
const updateComment = comments.find(({ body }) => body.includes(REPLACE_MARK));
|
||||
// eslint-disable-next-line no-console
|
||||
console.log('Origin comment:', updateComment);
|
||||
|
||||
// Update
|
||||
let res;
|
||||
if (!updateComment) {
|
||||
res = await withGithub(`https://api.github.com/repos/${REPO}/issues/${PR}/comments`, {
|
||||
body: wrappedComment,
|
||||
});
|
||||
} else {
|
||||
res = await withGithub(
|
||||
`https://api.github.com/repos/${REPO}/issues/comments/${updateComment.id}`,
|
||||
{
|
||||
body: wrappedComment,
|
||||
},
|
||||
'PATCH',
|
||||
);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(res);
|
||||
})();
|
||||
Reference in New Issue
Block a user