UNPKG

@atomist/automation-client

Version:

Atomist API for software low-level client

47 lines 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const onCommand_1 = require("../../onCommand"); const defaultRepoLoader_1 = require("../common/defaultRepoLoader"); const repoFilter_1 = require("../common/repoFilter"); const repoUtils_1 = require("../common/repoUtils"); function defaultDetails(name) { return { tagRouter: exports.MessageClientTagRouter, description: name, }; } exports.MessageClientTagRouter = (tags, params, ctx) => ctx.messageClient.respond("TaggerTags: " + tags.tags.join()); /** * Create a handle function that tags one or many repos, following AllReposByDefaultParameters * @param tagger tagger function * @param factory construction function * @param {string} name * @param {string} details object allowing customization beyond reasonable defaults * @return {HandleCommand} */ function taggerHandler(tagger, factory, name, details = {}) { const detailsToUse = Object.assign(Object.assign({}, defaultDetails(name)), details); return onCommand_1.commandHandlerFrom(tagOneOrMany(tagger, name, detailsToUse), factory, name, detailsToUse.description, detailsToUse.intent, detailsToUse.tags); } exports.taggerHandler = taggerHandler; /** * If owner and repo are required, tag just one repo. Otherwise tag all repos * in the present team */ function tagOneOrMany(tagger, name, details) { return (ctx, parameters) => { const repoFinder = parameters.targets.repoRef ? () => Promise.resolve([parameters.targets.repoRef]) : details.repoFinder; return tagAll(ctx, parameters.targets.credentials, tagger, parameters, repoFinder, repoFilter_1.andFilter(parameters.targets.test, details.repoFilter), !!details.repoLoader ? details.repoLoader(parameters) : undefined) .then((tags) => { return Promise.all(tags .filter(pr => tags.length > 0) .map(t => details.tagRouter(t, parameters, ctx))); }); }; } function tagAll(ctx, credentials, tagger, parameters, repoFinder, repoFilter = repoFilter_1.AllRepos, repoLoader = defaultRepoLoader_1.defaultRepoLoader(credentials)) { return repoUtils_1.doWithAllRepos(ctx, credentials, p => tagger(p, ctx, parameters), parameters, repoFinder, repoFilter, repoLoader); } //# sourceMappingURL=taggerHandler.js.map