Added puppet forge (version) support

This commit is contained in:
Jan Vansteenkiste 2014-05-08 18:14:25 +02:00
parent 3c060d7f96
commit 734ba2e8b8

View File

@ -8,6 +8,7 @@ var fs = require('fs');
var LruCache = require('./lru-cache.js');
var badge = require('./badge.js');
var svg2img = require('./svg-to-img.js');
var semver = require('semver');
var serverStartTime = new Date((new Date()).toGMTString());
var validTemplates = ['default', 'flat'];
@ -962,6 +963,53 @@ cache(function(data, match, sendBadge) {
});
}));
// Puppet Forge
camp.route(/^\/puppetforge\/v\/([^\/]+\/[^\/]+)\.(svg|png|gif|jpg)$/,
cache(function(data, match, sendBadge) {
var userRepo = match[1];
var format = match[2];
var options = {
json: true,
uri: 'https://forge.puppetlabs.com/api/v1/releases.json?module=' + userRepo
};
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 {
var unstable = function(ver) { return /-[0-9A-Za-z.-]+(?:\+[0-9A-Za-z.-]+)?$/.test(ver); };
var releases = json[userRepo];
if (releases.length == 0) {
badgeData.text[1] = 'none';
badgeData.colorscheme = 'lightgrey';
sendBadge(format, badgeData);
return;
}
var version = releases[0].version;
for (var i = 0; i < releases.length; i++) {
var current = releases[i].version;
if (semver.gt(current, version)) {
version = current;
}
}
if (unstable(version)) {
badgeData.colorscheme = "yellow";
} else {
badgeData.colorscheme = "blue";
}
badgeData.text[1] = "v" + version;
sendBadge(format, badgeData);
} catch(e) {
badgeData.text[1] = 'invalid';
sendBadge(format, badgeData);
}
});
}));
// Any badge.
camp.route(/^\/(:|badge\/)(([^-]|--)+)-(([^-]|--)+)-(([^-]|--)+)\.(svg|png|gif|jpg)$/,
function(data, match, end, ask) {