fix(ci): reuse documentation requirement lookups (#3640)

This commit is contained in:
José Almeida
2026-09-13 06:24:45 +02:00
committed by GitHub
parent df3c9142ab
commit 0ffa5e6489
4 changed files with 369 additions and 7 deletions
+20 -7
View File
@@ -1111,6 +1111,8 @@ async function loadCoverageContents({ client, changedFiles, headSha }) {
}
const contents = {};
const loaded = new Set();
const requirementSearches = new Map();
const requirementDirectories = new Map();
let documentCount = 0;
let totalBytes = 0;
async function load(pathname) {
@@ -1213,7 +1215,14 @@ async function loadCoverageContents({ client, changedFiles, headSha }) {
const unresolvedRequirementIds = [];
if (typeof client.searchCode === 'function') {
for (const requirementId of workOrder.requirements ?? []) {
const matches = await client.searchCode(requirementId, requirementDirectory);
const searchKey = JSON.stringify([requirementDirectory, requirementId]);
if (!requirementSearches.has(searchKey)) {
requirementSearches.set(
searchKey,
await client.searchCode(requirementId, requirementDirectory),
);
}
const matches = requirementSearches.get(searchKey);
if (matches.length === 0) {
unresolvedRequirementIds.push(requirementId);
}
@@ -1225,14 +1234,18 @@ async function loadCoverageContents({ client, changedFiles, headSha }) {
unresolvedRequirementIds.push(...(workOrder.requirements ?? []));
}
if (unresolvedRequirementIds.length > 0 && typeof client.listDirectory === 'function') {
let entries = [];
try {
entries = await client.listDirectory(requirementDirectory, headSha);
} catch (error) {
if (!isMissingResourceError(error)) {
throw error;
if (!requirementDirectories.has(requirementDirectory)) {
let entries = [];
try {
entries = await client.listDirectory(requirementDirectory, headSha);
} catch (error) {
if (!isMissingResourceError(error)) {
throw error;
}
}
requirementDirectories.set(requirementDirectory, entries);
}
const entries = requirementDirectories.get(requirementDirectory);
const candidateNames = new Set(unresolvedRequirementIds.map(requirementId => {
const parts = requirementId.split('-');
return `${parts.slice(2).join('-').replace(/-\d+$/, '').toLowerCase()}.md`;