UNPKG

hubot-iteration-script

Version:

A hubot script that gives useful information about Agile iterations.

85 lines (69 loc) 3.06 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _metovaMetrics = require('metova-metrics'); var _metovaMetrics2 = _interopRequireDefault(_metovaMetrics); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var DevCompleteTickets = function () { function DevCompleteTickets() { _classCallCheck(this, DevCompleteTickets); } _createClass(DevCompleteTickets, [{ key: 'constuctor', value: function constuctor() { var thirtyMinutes = 30 * 60 * 1000; var previousIterationStartDate = moment().startOf('isoWeek').subtract(3, 'days').startOf('day'); var newIterationStartDate = moment().startOf('isoWeek').add(4, 'days'); var totalStoryPoints = 0; var totalBugCount = 0; updateMetrics(); setInterval(updateMetrics, thirtyMinutes); } }, { key: 'getStoryPoints', value: function getStoryPoints() { return totalStoryPoints; } }, { key: 'getBugCount', value: function getBugCount() { return totalBugCount; } }, { key: '_updateMetrics', value: function _updateMetrics() { totalBugCount = 0; totalStoryPoints = 0; _metovaMetrics2.default.getMetrics({ namespace: "jira", metric: "stories" }, function (_ref) { var data = _ref.data; data.forEach(buildProjectStatus); }); } }, { key: '_buildProjectStatus', value: function _buildProjectStatus(data) { var ticket = data.value; if (filterIterationDevComplete(data)) { if (ticket.issue_type === 'Story') { totalStoryPoints += ticket.story_point_value; } else if (ticket.issue_type === 'Bug') { totalBugCount += 1; } } } }, { key: 'filterIterationDevComplete', value: function filterIterationDevComplete(_ref2) { var ticket = _ref2.value; return ticket.project_key === process.env.PROJECT_IDENTIFIER && (ticket.state === 'completed' || ticket.state === 'accepted') && moment(ticket.completed_at).isBetween(previousIterationStartDate, newIterationStartDate); } }]); return DevCompleteTickets; }(); exports.default = DevCompleteTickets; module.exports = exports['default'];