diff --git a/src/execute.js b/src/execute.js index 23984b9..41a5f71 100644 --- a/src/execute.js +++ b/src/execute.js @@ -31,8 +31,10 @@ const run = async (params) => { personalToken, displayCharts, pullRequestId, + typeTimeToReview, } = params; + const pullRequest = pullRequestId ? await fetchPullRequestById(octokit, pullRequestId) : null; @@ -50,7 +52,11 @@ const run = async (params) => { }); core.info(`Found ${pulls.length} pull requests to analyze`); - const reviewersRaw = getReviewers(pulls); + + const options = { + typeTimeToReview + } + const reviewersRaw = getReviewers(pulls, options); core.info(`Analyzed stats for ${reviewersRaw.length} pull request reviewers`); const reviewers = setUpReviewers({ diff --git a/src/interactors/getReviewers/calculateReviewsStats.js b/src/interactors/getReviewers/calculateReviewsStats.js index 782efbf..f68d274 100644 --- a/src/interactors/getReviewers/calculateReviewsStats.js +++ b/src/interactors/getReviewers/calculateReviewsStats.js @@ -1,8 +1,8 @@ -const { sum, median, divide } = require('../../utils'); +const { sum, calculateTimeToReview, divide } = require('../../utils'); const getProperty = (list, prop) => list.map((el) => el[prop]); -module.exports = (reviews) => { +module.exports = (reviews, options) => { const pullRequestIds = getProperty(reviews, 'pullRequestId'); const totalReviews = new Set(pullRequestIds).size; const totalComments = sum(getProperty(reviews, 'commentsCount')); @@ -11,6 +11,6 @@ module.exports = (reviews) => { totalReviews, totalComments, commentsPerReview: divide(totalComments, totalReviews), - timeToReview: median(getProperty(reviews, 'timeToReview')), + timeToReview: calculateTimeToReview(getProperty(reviews, 'timeToReview'), options.typeTimeToReview), }; }; diff --git a/src/interactors/getReviewers/index.js b/src/interactors/getReviewers/index.js index 2112927..6bdd88d 100644 --- a/src/interactors/getReviewers/index.js +++ b/src/interactors/getReviewers/index.js @@ -1,7 +1,7 @@ const calculateReviewsStats = require('./calculateReviewsStats'); const groupReviews = require('./groupReviews'); -module.exports = (pulls) => groupReviews(pulls).map(({ author, reviews }) => { - const stats = calculateReviewsStats(reviews); +module.exports = (pulls, options) => groupReviews(pulls).map(({ author, reviews }) => { + const stats = calculateReviewsStats(reviews, options); return { author, reviews, stats }; }); diff --git a/src/utils/calculateTimeToReview.js b/src/utils/calculateTimeToReview.js new file mode 100644 index 0000000..e6462fd --- /dev/null +++ b/src/utils/calculateTimeToReview.js @@ -0,0 +1,14 @@ + +const median = require('./median') +const average = require('./average') + +module.exports = (list, type) => { + switch(type) { + case "average": + return average(list) + case "median": + default: + return median(list) + break; + } +} diff --git a/src/utils/index.js b/src/utils/index.js index c29285d..e81819d 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -7,6 +7,7 @@ const median = require('./median'); const repos = require('./repos'); const subtractDaysToDate = require('./subtractDaysToDate'); const sum = require('./sum'); +const calculateTimeToReview = require("") module.exports = { ...repos,