parent
c6719399ae
commit
ce2c244fe4
49
server.js
49
server.js
|
@ -270,40 +270,25 @@ cache(function(data, match, sendBadge, request) {
|
||||||
var userRepo = match[2]; // eg, espadrine/sc
|
var userRepo = match[2]; // eg, espadrine/sc
|
||||||
var branch = match[3];
|
var branch = match[3];
|
||||||
var format = match[4];
|
var format = match[4];
|
||||||
var options = {
|
var url = 'https://api.travis-ci.org/' + userRepo + '.svg';
|
||||||
json: true,
|
if (branch != null) {
|
||||||
uri: 'https://api.travis-ci.org/repos/' + userRepo + '/builds.json'
|
url += '?branch=' + branch;
|
||||||
};
|
}
|
||||||
branch = branch || 'master';
|
|
||||||
var badgeData = getBadgeData('build', data);
|
var badgeData = getBadgeData('build', data);
|
||||||
request(options, function(err, res, json) {
|
fetchFromSvg(request, url, function(err, res) {
|
||||||
if (err != null) {
|
if (err != null) {
|
||||||
badgeData.text[1] = 'inaccessible';
|
badgeData.text[1] = 'inaccessible';
|
||||||
sendBadge(format, badgeData);
|
sendBadge(format, badgeData);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
// Find the latest push on this branch.
|
badgeData.text[1] = res;
|
||||||
var build = null;
|
if (res === 'passing') {
|
||||||
for (var i = 0; i < json.length; i++) {
|
|
||||||
if ((json[i].state === 'finished')
|
|
||||||
&& (json[i].event_type === 'push')
|
|
||||||
&& (json[i].branch === branch)) {
|
|
||||||
build = json[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
badgeData.text[1] = 'pending';
|
|
||||||
if (build === null) {
|
|
||||||
sendBadge(format, badgeData);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (build.result === 0) {
|
|
||||||
badgeData.colorscheme = 'brightgreen';
|
badgeData.colorscheme = 'brightgreen';
|
||||||
badgeData.text[1] = 'passing';
|
} else if (res === 'failing') {
|
||||||
} else if (build.result === 1) {
|
|
||||||
badgeData.colorscheme = 'red';
|
badgeData.colorscheme = 'red';
|
||||||
badgeData.text[1] = 'failing';
|
} else {
|
||||||
|
badgeData.text[1] = 'pending';
|
||||||
}
|
}
|
||||||
sendBadge(format, badgeData);
|
sendBadge(format, badgeData);
|
||||||
|
|
||||||
|
@ -2299,6 +2284,20 @@ function metric(n) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Get data from a svg-style badge.
|
||||||
|
// cb: function(err, string)
|
||||||
|
function fetchFromSvg(request, url, cb) {
|
||||||
|
request(url, function(err, res, buffer) {
|
||||||
|
if (err != null) { return cb(err); }
|
||||||
|
try {
|
||||||
|
var match = />([^<>]+)<\/text><\/g>/.exec(buffer);
|
||||||
|
cb(null, match[1]);
|
||||||
|
} catch(e) {
|
||||||
|
cb(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function coveragePercentageColor(percentage) {
|
function coveragePercentageColor(percentage) {
|
||||||
if (percentage < 80) {
|
if (percentage < 80) {
|
||||||
return 'red';
|
return 'red';
|
||||||
|
|
Loading…
Reference in New Issue
Block a user