[gratipay gemnasium snap-ci cauditor] add deprecation helpers, deprecate gemnasium (#1524)
This commit is contained in:
@@ -1263,10 +1263,6 @@ const allBadgeExamples = [
|
||||
title: 'bitHound',
|
||||
previewUri: '/bithound/code/github/rexxars/sse-channel.svg'
|
||||
},
|
||||
{
|
||||
title: 'Gemnasium',
|
||||
previewUri: '/gemnasium/mathiasbynens/he.svg'
|
||||
},
|
||||
{
|
||||
title: 'Hackage-Deps',
|
||||
previewUri: '/hackage-deps/v/lens.svg'
|
||||
|
||||
14
lib/deprecated-services.js
Normal file
14
lib/deprecated-services.js
Normal file
@@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
const deprecatedServices = {
|
||||
'gittip': new Date('2017-12-29'),
|
||||
'gratipay': new Date('2017-12-29'),
|
||||
'gemnasium': new Date('2018-05-15'),
|
||||
'snap': new Date('2018-01-23'),
|
||||
'snap-ci': new Date('2018-01-23'),
|
||||
'cauditor': new Date('2018-02-15'),
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
deprecatedServices
|
||||
}
|
||||
23
lib/deprecation-helpers.js
Normal file
23
lib/deprecation-helpers.js
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
const { makeBadgeData, setBadgeColor } = require('./badge-data');
|
||||
const { deprecatedServices } = require('./deprecated-services');
|
||||
|
||||
const isDeprecated = function (service, now=new Date(), depServices=deprecatedServices) {
|
||||
if (!(service in depServices)) {
|
||||
return false;
|
||||
}
|
||||
return now.getTime() >= depServices[service].getTime();
|
||||
};
|
||||
|
||||
const getDeprecatedBadge = function (label, data) {
|
||||
const badgeData = makeBadgeData(label, data);
|
||||
setBadgeColor(badgeData, 'lightgray');
|
||||
badgeData.text[1] = 'no longer available';
|
||||
return badgeData;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
isDeprecated,
|
||||
getDeprecatedBadge,
|
||||
};
|
||||
39
lib/deprecation-helpers.spec.js
Normal file
39
lib/deprecation-helpers.spec.js
Normal file
@@ -0,0 +1,39 @@
|
||||
'use strict';
|
||||
|
||||
const { expect } = require('chai');
|
||||
const { test, given } = require('sazerac');
|
||||
const { isDeprecated, getDeprecatedBadge } = require('./deprecation-helpers');
|
||||
|
||||
describe('Deprecated Badge Helper', function() {
|
||||
it('makes "no longer available" badge', function() {
|
||||
const badge = getDeprecatedBadge('foo', {});
|
||||
expect(badge.text[0]).to.equal('foo');
|
||||
expect(badge.text[1]).to.equal('no longer available');
|
||||
expect(badge.colorscheme).to.equal('lightgray');
|
||||
});
|
||||
|
||||
it('ignores colorB param', function() {
|
||||
const badge = getDeprecatedBadge('foo', {colorB: 'fedcba'});
|
||||
expect(badge.colorscheme).to.equal('lightgray');
|
||||
});
|
||||
});
|
||||
|
||||
describe('isDeprecated function', function () {
|
||||
test(isDeprecated, function () {
|
||||
|
||||
given('fooservice', new Date(), {}).expect(false);
|
||||
|
||||
given(
|
||||
'fooservice',
|
||||
new Date('2001-01-11 23:59:00'),
|
||||
{'fooservice': new Date('2001-01-12')}
|
||||
).expect(false);
|
||||
|
||||
given(
|
||||
'fooservice',
|
||||
new Date('2001-01-12 00:00:01'),
|
||||
{'fooservice': new Date('2001-01-12')}
|
||||
).expect(true);
|
||||
|
||||
});
|
||||
});
|
||||
20
server.js
20
server.js
@@ -10,6 +10,7 @@ const semver = require('semver');
|
||||
const xml2js = require('xml2js');
|
||||
const xpath = require('xpath');
|
||||
|
||||
const { isDeprecated, getDeprecatedBadge } = require('./lib/deprecation-helpers');
|
||||
const { checkErrorResponse } = require('./lib/error-helper');
|
||||
const analytics = require('./lib/analytics');
|
||||
const config = require('./lib/server-config');
|
||||
@@ -1096,12 +1097,10 @@ cache(function(data, match, sendBadge, request) {
|
||||
camp.route(/^\/(?:gittip|gratipay(\/user|\/team|\/project)?)\/(.*)\.(svg|png|gif|jpg|json)$/,
|
||||
cache(function(queryParams, match, sendBadge, request) {
|
||||
const format = match[3];
|
||||
const badgeData = getBadgeData('gratipay', queryParams);
|
||||
const badgeData = getDeprecatedBadge('gratipay', queryParams);
|
||||
if (badgeData.template === 'social') {
|
||||
badgeData.logo = getLogo('gratipay', queryParams);
|
||||
}
|
||||
badgeData.colorscheme = 'lightgray';
|
||||
badgeData.text[1] = 'no longer available';
|
||||
sendBadge(format, badgeData);
|
||||
}));
|
||||
|
||||
@@ -2997,6 +2996,13 @@ camp.route(/^\/gemnasium\/(.+)\.(svg|png|gif|jpg|json)$/,
|
||||
cache(function(data, match, sendBadge, request) {
|
||||
var userRepo = match[1]; // eg, `jekyll/jekyll`.
|
||||
var format = match[2];
|
||||
|
||||
if (isDeprecated('gemnasium', serverStartTime)) {
|
||||
const badgeData = getDeprecatedBadge('gemnasium', data);
|
||||
sendBadge(format, badgeData);
|
||||
return;
|
||||
}
|
||||
|
||||
var options = 'https://gemnasium.com/' + userRepo + '.svg';
|
||||
var badgeData = getBadgeData('dependencies', data);
|
||||
request(options, function(err, res, buffer) {
|
||||
@@ -6366,9 +6372,7 @@ cache(function(data, match, sendBadge, request) {
|
||||
camp.route(/^\/snap(-ci?)\/([^/]+\/[^/]+)(?:\/(.+))\.(svg|png|gif|jpg|json)$/,
|
||||
cache(function(data, match, sendBadge, request) {
|
||||
const format = match[4];
|
||||
const badgeData = getBadgeData('snap CI', data);
|
||||
badgeData.colorscheme = 'lightgray';
|
||||
badgeData.text[1] = 'no longer available';
|
||||
const badgeData = getDeprecatedBadge('snap CI', data);
|
||||
sendBadge(format, badgeData);
|
||||
}));
|
||||
|
||||
@@ -6857,9 +6861,7 @@ cache(function(data, match, sendBadge, request) {
|
||||
camp.route(/^\/cauditor\/(mi|ccn|npath|hi|i|ca|ce|dit)\/([^/]+)\/([^/]+)\/(.+)\.(svg|png|gif|jpg|json)$/,
|
||||
cache(function(data, match, sendBadge, request) {
|
||||
const format = match[5];
|
||||
const badgeData = getBadgeData('cauditor', data);
|
||||
setBadgeColor(badgeData, 'lightgray');
|
||||
badgeData.text[1] = 'no longer available';
|
||||
const badgeData = getDeprecatedBadge('cauditor', data);
|
||||
sendBadge(format, badgeData);
|
||||
}));
|
||||
|
||||
|
||||
21
service-tests/gemnasium.js
Normal file
21
service-tests/gemnasium.js
Normal file
@@ -0,0 +1,21 @@
|
||||
'use strict';
|
||||
|
||||
const ServiceTester = require('./runner/service-tester');
|
||||
const { expect } = require('chai')
|
||||
|
||||
const { isDeprecated } = require('../lib/deprecation-helpers');
|
||||
|
||||
const t = new ServiceTester({ id: 'gemnasium', title: 'gemnasium' });
|
||||
module.exports = t;
|
||||
|
||||
|
||||
t.create('no longer available (previously dependencies)')
|
||||
.get('/mathiasbynens/he.json')
|
||||
.afterJSON(function(badge) {
|
||||
if (isDeprecated('gemnasium')) {
|
||||
expect(badge.name).to.equal('gemnasium');
|
||||
expect(badge.value).to.equal('no longer available');
|
||||
} else {
|
||||
expect(badge.name).to.equal('dependencies');
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user