1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const onCommand_1 = require("../../onCommand");
|
4 | const allReposInTeamRepoFinder_1 = require("../common/allReposInTeamRepoFinder");
|
5 | const defaultRepoLoader_1 = require("../common/defaultRepoLoader");
|
6 | const repoFilter_1 = require("../common/repoFilter");
|
7 | const repoUtils_1 = require("../common/repoUtils");
|
8 | function defaultDetails(name) {
|
9 | return {
|
10 | tagRouter: exports.MessageClientTagRouter,
|
11 | description: name,
|
12 | };
|
13 | }
|
14 | exports.MessageClientTagRouter = (tags, params, ctx) => ctx.messageClient.respond("Tags: " + tags.tags.join());
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | function taggerHandler(tagger, factory, name, details = {}) {
|
24 | const detailsToUse = Object.assign({}, defaultDetails(name), details);
|
25 | return onCommand_1.commandHandlerFrom(tagOneOrMany(tagger, name, detailsToUse), factory, name, detailsToUse.description, detailsToUse.intent, detailsToUse.tags);
|
26 | }
|
27 | exports.taggerHandler = taggerHandler;
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | function tagOneOrMany(tagger, name, details) {
|
33 | return (ctx, parameters) => {
|
34 | const repoFinder = parameters.targets.repoRef ?
|
35 | () => Promise.resolve([parameters.targets.repoRef]) :
|
36 | details.repoFinder;
|
37 | return tagAll(ctx, parameters.targets.credentials, tagger, parameters, repoFinder, repoFilter_1.andFilter(parameters.targets.test, details.repoFilter), !!details.repoLoader ? details.repoLoader(parameters) : undefined)
|
38 | .then((tags) => {
|
39 | return Promise.all(tags
|
40 | .filter(pr => tags.length > 0)
|
41 | .map(t => details.tagRouter(t, parameters, ctx)));
|
42 | });
|
43 | };
|
44 | }
|
45 | function tagAll(ctx, credentials, tagger, parameters, repoFinder = allReposInTeamRepoFinder_1.allReposInTeam(), repoFilter = repoFilter_1.AllRepos, repoLoader = defaultRepoLoader_1.defaultRepoLoader(credentials)) {
|
46 | return repoUtils_1.doWithAllRepos(ctx, credentials, p => tagger(p, ctx, parameters), parameters, repoFinder, repoFilter, repoLoader);
|
47 | }
|
48 |
|
\ | No newline at end of file |