Skip to content

Commit 9f0e0a4

Browse files
committed
feat(script-results): build a map of results from the script executions against the repos list
1 parent f0602b9 commit 9f0e0a4

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed
Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
function filterCancelledRoutesFromResults(results) {
2+
return results.filter(Boolean);
3+
}
4+
15
export async function runScriptAgainstRepositories(octokit, repositories, script, options) {
2-
for (const repository of repositories) {
6+
const results = await Promise.all(repositories.map(async repository => {
37
octokit.log.info(
4-
{ octoherd: true },
8+
{octoherd: true},
59
"Running on %s ...",
610
repository.full_name
711
);
@@ -12,10 +16,14 @@ export async function runScriptAgainstRepositories(octokit, repositories, script
1216
octokit.log.setContext({repository: {id, owner, name}});
1317
}
1418

15-
await script(octokit, repository, options);
19+
const scriptResult = await script(octokit, repository, options);
20+
21+
return [repository.full_name, scriptResult];
1622
} catch (error) {
1723
if (!error.cancel) throw error;
1824
octokit.log.debug(error.message);
1925
}
20-
}
26+
}));
27+
28+
return Object.fromEntries(filterCancelledRoutesFromResults(results));
2129
}

tests/run-script-against-resolved-repositories.test.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,20 @@ runAgainstRepos('run the script against the provided repositories', async () =>
1414
const octokit = {log: {info: octokitInfoLogger}};
1515
const octokitCoreRepository = {id: 456, owner: {login: 'octokit'}, name: 'core.js', full_name: 'octokit/core.js'};
1616
const repositories = [octoherdCliRepository, octokitCoreRepository];
17-
const script = simple.spy(() => undefined);
17+
const script = simple.stub().callFn((octokitInstance, repository, options) => {
18+
switch (repository) {
19+
case octoherdCliRepository:
20+
return {foo: 'bar'};
21+
case octokitCoreRepository:
22+
return {baz: 'qux'};
23+
default:
24+
throw new Error('Unknown repository');
25+
}
26+
});
1827

19-
await runScriptAgainstRepositories(octokit, repositories, script, userOptions);
28+
const results = await runScriptAgainstRepositories(octokit, repositories, script, userOptions);
2029

30+
equal(results, {[octoherdCliRepository.full_name]: {foo: 'bar'}, [octokitCoreRepository.full_name]: {baz: 'qux'}});
2131
repositories.forEach((repository, index) => {
2232
equal(script.calls[index].args, [octokit, repository, userOptions]);
2333
equal(octokitInfoLogger.calls[index].args, [{octoherd: true}, "Running on %s ...", repository.full_name]);

0 commit comments

Comments
 (0)