74 строки
2.2 KiB
JavaScript
74 строки
2.2 KiB
JavaScript
import { Octokit } from "@octokit/rest";
|
|
import minimist from "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.requestReviewers({
|
|
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.`);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param {number} exitCode
|
|
*/
|
|
function printHelpAndExit(exitCode) {
|
|
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);
|
|
}
|