12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 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);
- })();
|