1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const onCommand_1 = require("../../onCommand");
|
4 | const repoFilter_1 = require("../common/repoFilter");
|
5 | const issueRaisingReviewRouter_1 = require("./issueRaisingReviewRouter");
|
6 | const reviewAll_1 = require("./reviewAll");
|
7 | function defaultDetails(name) {
|
8 | return {
|
9 | description: name,
|
10 | reviewRouter: issueRaisingReviewRouter_1.issueRaisingReviewRouter,
|
11 | };
|
12 | }
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 | function reviewerHandler(reviewerFactory, factory, name, details = {}) {
|
22 | const detailsToUse = Object.assign({}, defaultDetails(name), details);
|
23 | return onCommand_1.commandHandlerFrom(handleReviewOneOrMany(reviewerFactory, name, detailsToUse), factory, name, detailsToUse.description, detailsToUse.intent, detailsToUse.tags);
|
24 | }
|
25 | exports.reviewerHandler = reviewerHandler;
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | function handleReviewOneOrMany(reviewerFactory, name, details) {
|
31 | return (ctx, parameters) => {
|
32 | const repoFinder = parameters.targets.repoRef ?
|
33 | () => Promise.resolve([parameters.targets.repoRef]) :
|
34 | details.repoFinder;
|
35 | return reviewAll_1.reviewAll(ctx, parameters.targets.credentials, reviewerFactory(parameters), parameters, repoFinder, repoFilter_1.andFilter(parameters.targets.test, details.repoFilter), !!details.repoLoader ? details.repoLoader(parameters) : undefined)
|
36 | .then(projectReviews => {
|
37 | return Promise.all(projectReviews
|
38 | .filter(pr => pr.comments.length > 0)
|
39 | .map(pr => {
|
40 | return details.reviewRouter(pr, parameters, name, ctx);
|
41 | }))
|
42 | .then(persisted => ctx.messageClient.respond(`${name} reviewed ${projectReviews.length} repositories: Reported on ${persisted.length} with problems`)
|
43 | .then(() => ({
|
44 | projectsReviewed: projectReviews.length,
|
45 | projectReviews,
|
46 | })));
|
47 | });
|
48 | };
|
49 | }
|
50 |
|
\ | No newline at end of file |