Add Puppet Forge user stats

This commit is contained in:
Raphaël Pinson 2015-02-24 13:36:52 +01:00
parent 51d959f4b7
commit 5b072303f6
2 changed files with 65 additions and 1 deletions

View File

@ -2240,7 +2240,7 @@ mapNugetFeed('myget\\/(.*)', 1, function(match) {
};
});
// Puppet Forge
// Puppet Forge modules
camp.route(/^\/puppetforge\/([^\/]+)\/([^\/]+)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var info = match[1]; // either `v`, `dt`, `e` or `f`
@ -2327,6 +2327,62 @@ cache(function(data, match, sendBadge, request) {
});
}));
// Puppet Forge users
camp.route(/^\/puppetforge\/([^\/]+)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var info = match[1]; // either `rc` or `mc`
var user = match[2];
var format = match[3];
var options = {
json: true,
uri: 'https://forgeapi.puppetlabs.com/v3/users/'+user
};
var badgeData = getBadgeData('puppetforge', data);
request(options, function dealWithData(err, res, json) {
if (err != null || (json.length !== undefined && json.length === 0)) {
badgeData.text[1] = 'inaccessible';
sendBadge(format, badgeData);
return;
}
try {
if (info == 'rc') {
var releases = json['release_count'];
if (releases === 0) {
badgeData.colorscheme = 'red';
} else if (releases < 10) {
badgeData.colorscheme = 'yellow';
} else if (releases < 50) {
badgeData.colorscheme = 'yellowgreen';
} else if (releases < 100) {
badgeData.colorscheme = 'green';
} else {
badgeData.colorscheme = 'brightgreen';
}
badgeData.text[1] = metric(releases) + ' releases';
} else if (info == 'mc') {
var modules = json['module_count'];
if (modules === 0) {
badgeData.colorscheme = 'red';
} else if (modules < 5) {
badgeData.colorscheme = 'yellow';
} else if (modules < 10) {
badgeData.colorscheme = 'yellowgreen';
} else if (modules < 50) {
badgeData.colorscheme = 'green';
} else {
badgeData.colorscheme = 'brightgreen';
}
badgeData.text[1] = metric(modules) + ' modules';
}
sendBadge(format, badgeData);
} catch(e) {
badgeData.text[1] = 'invalid';
sendBadge(format, badgeData);
}
});
}));
// Jenkins build status integration
camp.route(/^\/jenkins(-ci)?\/s\/(http(s)?)\/((?:[^\/]+)(?:\/.+?)?)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {

View File

@ -498,6 +498,14 @@ Pixel-perfect &nbsp; Retina-ready &nbsp; Fast &nbsp; Consistent &nbsp; Hackable
<td><img src='/puppetforge/f/camptocamp/openssl.svg' alt=''/></td>
<td><code>https://img.shields.io/puppetforge/f/camptocamp/openssl.svg</code></td>
</tr>
<tr><th> Puppet Forge: </th>
<td><img src='/puppetforge/rc/camptocamp.svg' alt=''/></td>
<td><code>https://img.shields.io/puppetforge/rc/camptocamp.svg</code></td>
</tr>
<tr><th> Puppet Forge: </th>
<td><img src='/puppetforge/mc/camptocamp.svg' alt=''/></td>
<td><code>https://img.shields.io/puppetforge/mc/camptocamp.svg</code></td>
</tr>
</tbody></table>
<h2> Your Badge </h2>