async function issuesGroupedByStatus()

in tools/rfc-render/fetch-issues.js [10:70]


async function issuesGroupedByStatus(filterStatus = undefined) {
  const files = await fs.readdir(path.join(__dirname, '..', '..', 'text'));

  const octo = new Octokit({
    auth: process.env.PROJEN_GITHUB_TOKEN || process.env.GITHUB_TOKEN
  });

  const issueByStatus = {};

  const labelQuery = filterStatus ? `label:${filterStatus.join(',')}` : '';
  const fullQuery = `repo:aws/aws-cdk-rfcs is:issue ${labelQuery}`;
  console.log(fullQuery);
  const request = octo.search.issuesAndPullRequests.endpoint.merge({
    q: fullQuery,
  });

  const result = await octo.paginate(request);

  for (const issue of result) {
    // skip pull requests
    if (issue.pull_request) {
      continue;
    }

    const status = determineStatus(issue.labels);
    // kip not requested status
    if (filterStatus && !filterStatus.includes(status)) {
      continue;
    }
    // skip closed issues of unknown status
    if (issue.state === 'closed' && status === UNKNOWN_STATUS) {
      continue;
    }

    const { champion, pr_number } = findMetadata(issue);
    const doc = findDocFile(files, issue.number);

    let link;

    // we we already have a doc, then the link should go to it
    if (doc) {
      link = `https://github.com/aws/aws-cdk-rfcs/blob/main/text/${doc}`;
    } else if (pr_number) {
      link = `https://github.com/aws/aws-cdk-rfcs/pull/${pr_number}`;
    } else {
      link = `https://github.com/aws/aws-cdk-rfcs/issues/${issue.number}`;
    }

    (issueByStatus[status] ??= []).push({
      number: issue.number,
      title: issue.title,
      link,
      assignee: issue.assignee && issue.assignee.login,
      champion,
      status,
      doc,
    });
  }

  return issueByStatus;
}