UNPKG

@atomist/automation-client

Version:
42 lines 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const logger_1 = require("../../internal/util/logger"); const defaultRepoLoader_1 = require("./defaultRepoLoader"); const repoFilter_1 = require("./repoFilter"); /** * Perform an action against all the given repos. * Skip over repos that cannot be loaded, logging a warning. * @param {HandlerContext} ctx * @param credentials credentials for repo finding and loading * @param action action parameter * @param parameters optional parameters * @param {RepoFinder} repoFinder * @param {} repoFilter * @param {RepoLoader} repoLoader * @return {Promise<R[]>} */ function doWithAllRepos(ctx, credentials, action, parameters, repoFinder, repoFilter = repoFilter_1.AllRepos, repoLoader = defaultRepoLoader_1.defaultRepoLoader(credentials)) { return relevantRepos(ctx, repoFinder, repoFilter) .then(ids => { return Promise.all(ids.map(id => repoLoader(id) .catch(err => { logger_1.logger.warn("Unable to load repo %s:%s: %s", id.owner, id.repo, err); return undefined; }) .then(p => { if (p) { return action(p, parameters); } }))) .then(proms => proms.filter(prom => prom)); }); } exports.doWithAllRepos = doWithAllRepos; function relevantRepos(ctx, repoFinder, repoFilter = repoFilter_1.AllRepos) { return repoFinder(ctx) .then(rids => Promise.all(rids.map(rid => Promise.resolve(repoFilter(rid)) .then(relevant => relevant ? rid : undefined)))) .then(many => many.filter(s => s !== undefined)); } exports.relevantRepos = relevantRepos; //# sourceMappingURL=repoUtils.js.map