From 7fd9f3b27a727cdfb20a6e69296057c940c1f81d Mon Sep 17 00:00:00 2001 From: Josh Gough Date: Thu, 8 Feb 2018 16:50:57 -0500 Subject: [PATCH] WIP generate stats on current commit levels by VCS family type --- src/app/Gruntfile.js | 3 +- src/app/package.json | 1 + src/app/tools/commit-stats.js | 69 +++++++++++++++++++++++++++++++ src/app/tools/es6/commit-stats.js | 20 +++++++++ 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 src/app/tools/commit-stats.js create mode 100644 src/app/tools/es6/commit-stats.js diff --git a/src/app/Gruntfile.js b/src/app/Gruntfile.js index 8d19c603..3b146864 100644 --- a/src/app/Gruntfile.js +++ b/src/app/Gruntfile.js @@ -6,7 +6,8 @@ module.exports = function(grunt) { 'api/**/es6/*.js', 'middleware/**/es6/*.js', 'client/**/es6/*.js', - 'smoke-test/**/es6/*.js' + 'smoke-test/**/es6/*.js', + 'tools/**/es6/*.js' ]; var babelFiles = { diff --git a/src/app/package.json b/src/app/package.json index 5e2d7b99..1ff3a586 100644 --- a/src/app/package.json +++ b/src/app/package.json @@ -49,6 +49,7 @@ "babel": "^5.8.20", "chai-match": "^1.1.1", "commander": "^2.8.1", + "glance-json": "^0.1.6", "grunt": "^0.4.5", "grunt-babel": "^5.0.1", "grunt-contrib-less": "^1.0.1", diff --git a/src/app/tools/commit-stats.js b/src/app/tools/commit-stats.js new file mode 100644 index 00000000..cd0a48d6 --- /dev/null +++ b/src/app/tools/commit-stats.js @@ -0,0 +1,69 @@ +'use strict'; + +var _Promise = require('babel-runtime/core-js/promise')['default']; + +var _Object$keys = require('babel-runtime/core-js/object/keys')['default']; + +var _regeneratorRuntime = require('babel-runtime/regenerator')['default']; + +var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; + +var _this = this; + +var _apiHelpersVcsFamilies = require('../api/helpers/vcsFamilies'); + +var _apiHelpersVcsFamilies2 = _interopRequireDefault(_apiHelpersVcsFamilies); + +var _apiHelpersEventStoreClient = require('../api/helpers/eventStoreClient'); + +var _apiHelpersEventStoreClient2 = _interopRequireDefault(_apiHelpersEventStoreClient); + +var _glanceJson = require('glance-json'); + +var _glanceJson2 = _interopRequireDefault(_glanceJson); + +var _underscore = require('underscore'); + +var _underscore2 = _interopRequireDefault(_underscore); + +var currentTotals = _Promise.all(_Object$keys(_apiHelpersVcsFamilies2['default']).map(function callee$0$0(family) { + var args; + return _regeneratorRuntime.async(function callee$0$0$(context$1$0) { + while (1) switch (context$1$0.prev = context$1$0.next) { + case 0: + args = { + name: '$et-' + family + 'CommitReceived', + count: 1, + embed: 'tryharder' + }; + context$1$0.t0 = family; + context$1$0.next = 4; + return _regeneratorRuntime.awrap(_apiHelpersEventStoreClient2['default'].getFromStream(args)); + + case 4: + context$1$0.t1 = context$1$0.sent; + context$1$0.t2 = (0, _glanceJson2['default'])(context$1$0.t1, 'positionEventNumber'); + return context$1$0.abrupt('return', { + family: context$1$0.t0, + count: context$1$0.t2 + }); + + case 7: + case 'end': + return context$1$0.stop(); + } + }, null, _this); +})); + +currentTotals.then(function (results) { + var count = results.reduce(function (sum, o) { + return sum + o.count; + }, 0); + results.forEach(function (o, i) { + return o.percentage = (o.count / count * 100).toFixed(2); + }); + results.push({ family: 'Total', count: count }); + console.log(_underscore2['default'].sortBy(results, function (o) { + return -o.count; + })); +}); diff --git a/src/app/tools/es6/commit-stats.js b/src/app/tools/es6/commit-stats.js new file mode 100644 index 00000000..d7cfe223 --- /dev/null +++ b/src/app/tools/es6/commit-stats.js @@ -0,0 +1,20 @@ +import families from '../api/helpers/vcsFamilies'; +import es from '../api/helpers/eventStoreClient'; +import gj from 'glance-json'; +import _ from 'underscore'; + +const currentTotals = Promise.all(Object.keys(families).map(async (family) => { + const args = { + name: `$et-${family}CommitReceived`, + count: 1, + embed: 'tryharder' + }; + return { family, count: gj(await es.getFromStream(args), 'positionEventNumber') }; +})); + +currentTotals.then(results => { + const count = results.reduce((sum, o) => sum + o.count, 0); + results.forEach((o, i) => o.percentage = (o.count / count * 100).toFixed(2)); + results.push({ family: 'Total', count }); + console.log(_.sortBy(results, o => -o.count)); +}); \ No newline at end of file