in functions/src/plugins/triagePR.ts [74:101]
async checkTriage(context: Context): Promise<void> {
if((context.payload.issue && context.payload.issue.pull_request) || context.payload.pull_request) {
const pr: Github.PullRequestsGetResponse | Github.IssuesGetResponse = context.payload.pull_request || context.payload.issue;
const config = await this.getConfig(context);
if(config.disabled) {
return;
}
const {owner, repo} = context.repo();
const isL1Triaged = this.isTriaged(config.l1TriageLabels, getLabelsNames(pr.labels));
if(!isL1Triaged) {
if(pr.milestone) {
await this.setMilestone(null, context.github, owner, repo, pr);
}
} else if(!pr.milestone || pr.milestone.number === config.defaultMilestone || pr.milestone.number === config.needsTriageMilestone) {
const isL2Triaged = this.isTriaged(config.l2TriageLabels || config.triagedLabels, getLabelsNames(pr.labels));
if(isL2Triaged) {
if(!pr.milestone || pr.milestone.number !== config.defaultMilestone) {
await this.setMilestone(config.defaultMilestone, context.github, owner, repo, pr);
}
} else {
// if it's not triaged, set the "needsTriage" milestone
if(!pr.milestone || pr.milestone.number !== config.needsTriageMilestone) {
await this.setMilestone(config.needsTriageMilestone, context.github, owner, repo, pr);
}
}
}
}
}