diff options
author | kpdecker <kpdecker@gmail.com> | 2013-08-25 14:14:33 -0500 |
---|---|---|
committer | kpdecker <kpdecker@gmail.com> | 2013-08-25 14:14:33 -0500 |
commit | 672aeda17f9309ad7e4d31ef1c3b9a302fbb5baf (patch) | |
tree | 7459fe83e58ae9d12d2e699eaa46528587015bc8 /tasks/metrics.js | |
parent | 74369f724c1cf5d658736bd581348677f464f76c (diff) | |
download | handlebars.js-672aeda17f9309ad7e4d31ef1c3b9a302fbb5baf.zip handlebars.js-672aeda17f9309ad7e4d31ef1c3b9a302fbb5baf.tar.gz handlebars.js-672aeda17f9309ad7e4d31ef1c3b9a302fbb5baf.tar.bz2 |
Metrics collection framework
Diffstat (limited to 'tasks/metrics.js')
-rw-r--r-- | tasks/metrics.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tasks/metrics.js b/tasks/metrics.js new file mode 100644 index 0000000..c4a202b --- /dev/null +++ b/tasks/metrics.js @@ -0,0 +1,63 @@ +var _ = require('underscore'), + async = require('async'), + git = require('./util/git'), + Keen = require('keen.io'), + metrics = require('../bench'); + +module.exports = function(grunt) { + grunt.registerTask('metrics', function() { + var done = this.async(), + execName = grunt.option('name'), + events = {}, + + projectId = process.env.KEEN_PROJECTID, + writeKey = process.env.KEEN_WRITEKEY, + keen; + + if (!execName && projectId && writeKey) { + keen = Keen.configure({ + projectId: projectId, + writeKey: writeKey + }); + } + + async.each(_.keys(metrics), function(name, complete) { + if (/^_/.test(name) || (execName && name !== execName)) { + return complete(); + } + + metrics[name](grunt, function(data) { + events[name] = data; + complete(); + }); + }, + function() { + if (!keen) { + return done(); + } + + emit(keen, events, function(err, res) { + if (err) { + throw err; + } + + grunt.log.writeln('Metrics recorded.'); + done(); + }); + }); + }); +}; +function emit(keen, collections, callback) { + git.commitInfo(function(err, info) { + _.each(collections, function(collection) { + _.each(collection, function(event) { + if (info.tagName) { + event.tag = info.tagName; + } + event.sha = info.head; + }); + }); + + keen.addEvents(collections, callback); + }); +} |