From 85286649b6b09ce91689704267d0376297a3b57f Mon Sep 17 00:00:00 2001 From: Adam Dinwoodie Date: Thu, 26 Nov 2015 20:49:39 +0000 Subject: [PATCH] Add support for Code Climate issues Resolves #571. --- server.js | 40 ++++++++++++++++++++++++++++++++++++++++ try.html | 4 ++++ 2 files changed, 44 insertions(+) diff --git a/server.js b/server.js index e073a04..ef911b9 100644 --- a/server.js +++ b/server.js @@ -2149,6 +2149,46 @@ cache(function(data, match, sendBadge, request) { }); })); +// Code Climate issues integration +camp.route(/^\/codeclimate\/issues\/(.+)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var userRepo = match[1]; // eg, `github/me-and/mdf`. + var format = match[2]; + var options = 'https://codeclimate.com/' + userRepo + '/badges/issue_count.svg' + var badgeData = getBadgeData('issues', data); + request(options, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var count = buffer.match(/>([0-9]+) issues?/)[1]; + if (!count) { + badgeData.text[1] = 'malformed'; + sendBadge(format, badgeData); + return; + } + badgeData.text[1] = count; + if (count == 0) { + badgeData.colorscheme = 'brightgreen'; + } else if (count < 5) { + badgeData.colorscheme = 'green'; + } else if (count < 10) { + badgeData.colorscheme = 'yellowgreen'; + } else if (count < 20) { + badgeData.colorscheme = 'yellow'; + } else { + badgeData.colorscheme = 'red'; + } + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Code Climate integration camp.route(/^\/codeclimate\/(.+)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { diff --git a/try.html b/try.html index 4015452..b9bfabf 100644 --- a/try.html +++ b/try.html @@ -558,6 +558,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/codeclimate/coverage/github/triAGENS/ashikawa-core.svg + Code Climate: + + https://img.shields.io/codeclimate/issues/github/me-and/mdf.svg + Gemnasium: https://img.shields.io/gemnasium/mathiasbynens/he.svg