diff --git a/scripts/perf-result-post.js b/scripts/perf-result-post.js new file mode 100644 index 0000000000000..5b1c4814a9391 --- /dev/null +++ b/scripts/perf-result-post.js @@ -0,0 +1,48 @@ +// @ts-check +/// +// Must reference esnext.asynciterable lib, since octokit uses AsyncIterable internally +const Octokit = require("@octokit/rest"); +const fs = require("fs"); + +const requester = process.env.requesting_user; +const source = process.env.source_issue; +const postedComment = process.env.status_comment; +console.log(`Loading fragment from ${process.argv[3]}...`); +const outputTableText = fs.readFileSync(process.argv[3], { encoding: "utf8" }); +console.log(`Fragment contents: +${outputTableText}`); + +const gh = new Octokit(); +gh.authenticate({ + type: "token", + token: process.argv[2] +}); +gh.issues.createComment({ + number: +source, + owner: "Microsoft", + repo: "TypeScript", + body: `@${requester} +The results of the perf run you requested are in! Here they are: + +${outputTableText}` +}).then(async data => { + console.log(`Results posted!`); + const newCommentUrl = data.data.html_url; + const comment = await gh.issues.getComment({ + owner: "Microsoft", + repo: "TypeScript", + comment_id: +postedComment + }); + const newBody = `${comment.data.body} + +Update: [The results are in!](${newCommentUrl})`; + return await gh.issues.updateComment({ + owner: "Microsoft", + repo: "TypeScript", + comment_id: +postedComment, + body: newBody + }); +}).catch(e => { + console.error(e); + process.exit(1); +});