mirror of
https://github.com/github/codeql-action.git
synced 2025-12-27 09:40:17 +08:00
54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
import { composePaginateRest } from "@octokit/plugin-paginate-rest";
|
|
function eachRepositoryFactory(app) {
|
|
return Object.assign(eachRepository.bind(null, app), {
|
|
iterator: eachRepositoryIterator.bind(null, app)
|
|
});
|
|
}
|
|
async function eachRepository(app, queryOrCallback, callback) {
|
|
const i = eachRepositoryIterator(
|
|
app,
|
|
callback ? queryOrCallback : void 0
|
|
)[Symbol.asyncIterator]();
|
|
let result = await i.next();
|
|
while (!result.done) {
|
|
if (callback) {
|
|
await callback(result.value);
|
|
} else {
|
|
await queryOrCallback(result.value);
|
|
}
|
|
result = await i.next();
|
|
}
|
|
}
|
|
function singleInstallationIterator(app, installationId) {
|
|
return {
|
|
async *[Symbol.asyncIterator]() {
|
|
yield {
|
|
octokit: await app.getInstallationOctokit(installationId)
|
|
};
|
|
}
|
|
};
|
|
}
|
|
function eachRepositoryIterator(app, query) {
|
|
return {
|
|
async *[Symbol.asyncIterator]() {
|
|
const iterator = query ? singleInstallationIterator(app, query.installationId) : app.eachInstallation.iterator();
|
|
for await (const { octokit } of iterator) {
|
|
const repositoriesIterator = composePaginateRest.iterator(
|
|
octokit,
|
|
"GET /installation/repositories"
|
|
);
|
|
for await (const { data: repositories } of repositoriesIterator) {
|
|
for (const repository of repositories) {
|
|
yield { octokit, repository };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
export {
|
|
eachRepository,
|
|
eachRepositoryFactory,
|
|
eachRepositoryIterator
|
|
};
|