Skip to content

Commit

Permalink
Add script to work around GH issue with suggested reviewers (microsof…
Browse files Browse the repository at this point in the history
  • Loading branch information
rbuckton authored Mar 17, 2020
1 parent 9120497 commit ec426ee
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ scripts/processDiagnosticMessages.js
scripts/produceLKG.js
scripts/importDefinitelyTypedTests/importDefinitelyTypedTests.js
scripts/generateLocalizedDiagnosticMessages.js
scripts/request-pr-review.js
scripts/*.js.map
scripts/typings/
coverage/
Expand Down
3 changes: 3 additions & 0 deletions Gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ const copyright = "CopyrightNotice.txt";
const cleanTasks = [];

const buildScripts = () => buildProject("scripts");
task("scripts", buildScripts);
task("scripts").description = "Builds files in the 'scripts' folder.";

const cleanScripts = () => cleanProject("scripts");
cleanTasks.push(cleanScripts);

Expand Down
73 changes: 73 additions & 0 deletions scripts/request-pr-review.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/// <reference lib="esnext.asynciterable" />
/// <reference lib="es2015.promise" />
import octokit = require("@octokit/rest");
import Octokit = octokit.Octokit;
import minimist = require("minimist");

const options = minimist(process.argv.slice(2), {
boolean: ["help"],
string: ["token", "pull", "reviewer", "owner", "repo"],
alias: {
pr: "pull",
h: "help",
["?"]: "help"
},
default: {
token: process.env.GH_TOKEN,
pull: process.env.GH_PULL_NUMBER,
reviewer: process.env.REQUESTED_REVIEWER,
owner: "microsoft",
repo: "TypeScript"
}
});

if (options.help) {
printHelpAndExit(0);
}

if (!options.token || !options.pull || !options.reviewer || !options.owner || !options.repo) {
console.error("Invalid arguments");
printHelpAndExit(-1);
}

const pull_number = +options.pull;
if (!isFinite(pull_number)) {
console.error("Invalid arguments");
printHelpAndExit(-2);
}

const reviewers = Array.isArray(options.reviewer) ? options.reviewer : [options.reviewer];

main().catch(console.error);

async function main() {
const gh = new Octokit({ auth: options.token });
const response = await gh.pulls.createReviewRequest({
owner: options.owner,
repo: options.repo,
pull_number,
reviewers,
});
if (response.status === 201) {
console.log(`Added ${reviewers.join(", ")} to ${response.data.url}`);
}
else {
console.log(`Failed to add ${reviewers.join(", ")} to the pull request.`);
}
}

function printHelpAndExit(exitCode: number) {
console.log(`
usage: request-pr-review.js [options]
options:
--token <token> Your GitHub auth token. Uses %GH_TOKEN% if present.
--owner <owner> The GH user or organization for the repo (default: 'microsoft').
--repo <repo> The GH repo for the pull request (default: 'TypeScript').
--pull <pr_number> The pull request number. Uses %GH_PULL_NUMBER% if present.
--reviewer <reviewer> The GH username of reviewer to add. May be specified multiple times.
Uses %REQUESTED_REVIEWER% if present.
-h --help Prints this help message.
`);
return process.exit(exitCode);
}
3 changes: 2 additions & 1 deletion scripts/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"configurePrerelease.ts",
"buildProtocol.ts",
"produceLKG.ts",
"word2md.ts"
"word2md.ts",
"request-pr-review.ts"
]
}

0 comments on commit ec426ee

Please sign in to comment.