cnpmjs.org
Version:
Private npm registry and web for Enterprise, base on MySQL and Simple Store Service
49 lines (43 loc) • 1.21 kB
JavaScript
/**!
* cnpmjs.org - controllers/web/badge.js
*
* Copyright(c) fengmk2 and other contributors.
* MIT Licensed
*
* Authors:
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com)
*/
;
/**
* Module dependencies.
*/
var utility = require('utility');
var util = require('util');
var config = require('../../config');
var packageService = require('../../services/package');
exports.version = function* () {
var color = 'lightgrey';
var version = 'invalid';
var name = this.params[0];
var tag = this.query.tag || 'latest';
var info = yield* packageService.getModuleByTag(name, tag);
if (info) {
version = info.version;
if (/^0\.0\./.test(version)) {
// <0.1.0 & >=0.0.0
color = 'red';
} else if (/^0\./.test(version)) {
// <1.0.0 & >=0.1.0
color = 'green';
} else {
// >=1.0.0
color = 'blue';
}
}
var subject = config.badgeSubject.replace(/\-/g, '--');
version = version.replace(/\-/g, '--');
var style = this.query.style || 'flat-square';
var url = util.format('https://img.shields.io/badge/%s-%s-%s.svg?style=%s',
subject, version, color, utility.encodeURIComponent(style));
this.redirect(url);
};