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