move colorscheme back to original location, add @ syntax to cli for specifying style, cache templates on server start
This commit is contained in:
parent
252de55aa4
commit
c6163c9a4f
17
badge.js
17
badge.js
|
@ -15,12 +15,19 @@ try {
|
|||
} catch(e) {}
|
||||
canvasContext.font = '11px Verdana, "DejaVu Sans"';
|
||||
|
||||
// cache templates
|
||||
var templates = {}
|
||||
var templateFiles = fs.readdirSync('templates')
|
||||
templateFiles.forEach(function(file) {
|
||||
templates[file] = fs.readFileSync(path.join('templates', file)).toString()
|
||||
})
|
||||
|
||||
var colorscheme = require('./colorscheme.json');
|
||||
|
||||
function makeTemplate(colorscheme, template) {
|
||||
// Template crafting action below.
|
||||
var colorscheme = require(path.join(__dirname, 'templates', (colorscheme || 'default') + '-colorscheme.json'));
|
||||
var template = fs.readFileSync(path.join(__dirname, 'templates', (template || 'default') + '-template.svg'));
|
||||
var template = templates[(template || 'default') + '-template.svg'];
|
||||
var imageTemplate = dot.template(''+template);
|
||||
imageTemplate.colorscheme = colorscheme;
|
||||
return imageTemplate;
|
||||
}
|
||||
|
||||
|
@ -41,8 +48,8 @@ function makeImage(data, options, cb) {
|
|||
template = makeTemplate(options.colorscheme, options.template);
|
||||
}
|
||||
if (data.colorscheme) {
|
||||
data.colorA = template.colorscheme[data.colorscheme].colorA;
|
||||
data.colorB = template.colorscheme[data.colorscheme].colorB;
|
||||
data.colorA = colorscheme[data.colorscheme].colorA;
|
||||
data.colorB = colorscheme[data.colorscheme].colorB;
|
||||
}
|
||||
data.widths = [
|
||||
(canvasContext.measureText(data.text[0]).width|0) + 10,
|
||||
|
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="110" height="18"><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-opacity=".3"/><stop offset="1" stop-opacity=".5"/></linearGradient><rect rx="4" width="110" height="18" fill="#555"/><rect rx="4" x="63" width="47" height="18" fill="#a4a61d"/><path fill="#a4a61d" d="M63 0h4v18h-4z"/><rect rx="4" width="110" height="18" fill="url(#a)"/><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="32.5" y="13" fill="#010101" fill-opacity=".3">coverage</text><text x="32.5" y="12">coverage</text><text x="85.5" y="13" fill="#010101" fill-opacity=".3">83.9%</text><text x="85.5" y="12">83.9%</text></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="109" height="18"><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#fff" stop-opacity=".7"/><stop offset=".1" stop-color="#aaa" stop-opacity=".1"/><stop offset=".9" stop-opacity=".3"/><stop offset="1" stop-opacity=".5"/></linearGradient><rect rx="4" width="109" height="18" fill="#555"/><rect rx="4" x="63" width="46" height="18" fill="#a4a61d"/><path fill="#a4a61d" d="M63 0h4v18h-4z"/><rect rx="4" width="109" height="18" fill="url(#a)"/><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="32.5" y="13" fill="#010101" fill-opacity=".3">coverage</text><text x="32.5" y="12">coverage</text><text x="85" y="13" fill="#010101" fill-opacity=".3">80.8%</text><text x="85" y="12">80.8%</text></g></svg>
|
Before Width: | Height: | Size: 827 B After Width: | Height: | Size: 823 B |
23
gh-badge.js
23
gh-badge.js
|
@ -2,10 +2,10 @@
|
|||
var path = require('path');
|
||||
var badge = require(path.join(__dirname, 'badge.js'));
|
||||
var svg2img = require(path.join(__dirname, 'svg-to-img.js'));
|
||||
var colorscheme = require(path.join(__dirname, 'templates', 'default-colorscheme.json'));
|
||||
var colorscheme = require(path.join(__dirname, 'colorscheme.json'));
|
||||
if (process.argv.length < 4) {
|
||||
console.log('Usage: badge subject status [:colorscheme] [.output]');
|
||||
console.log('Or: badge subject status right-color [left-color] [.output]');
|
||||
console.log('Usage: badge subject status [:colorscheme] [.output] [@style]');
|
||||
console.log('Or: badge subject status right-color [left-color] [.output] [@style]');
|
||||
console.log();
|
||||
console.log(' colorscheme: one of '
|
||||
+ Object.keys(colorscheme).join(', ') + '.');
|
||||
|
@ -16,17 +16,24 @@ if (process.argv.length < 4) {
|
|||
console.log(' output:');
|
||||
console.log(' svg, png, jpg, or gif');
|
||||
console.log();
|
||||
console.log('Eg: badge cactus grown :green');
|
||||
console.log('Eg: badge cactus grown :green @flat');
|
||||
console.log();
|
||||
process.exit();
|
||||
}
|
||||
|
||||
// Find a format specifier.
|
||||
var format = 'svg';
|
||||
var style = '';
|
||||
for (var i = 4; i < process.argv.length; i++) {
|
||||
if (process.argv[i][0] === '.') {
|
||||
format = process.argv[i].slice(1);
|
||||
process.argv.splice(i, 1);
|
||||
continue;
|
||||
}
|
||||
if (process.argv[i][0] === '@') {
|
||||
style = process.argv[i].slice(1);
|
||||
process.argv.splice(i, 1);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,6 +42,12 @@ var status = process.argv[3];
|
|||
var color = process.argv[4] || ':green';
|
||||
var colorA = process.argv[5];
|
||||
|
||||
var badgeOpts = {}
|
||||
|
||||
if (style) {
|
||||
badgeOpts.template = style;
|
||||
}
|
||||
|
||||
var badgeData = {text: [subject, status]};
|
||||
|
||||
if (color[0] === ':') {
|
||||
|
@ -50,7 +63,7 @@ if (color[0] === ':') {
|
|||
if (colorA) { badgeData.colorA = colorA; }
|
||||
}
|
||||
|
||||
badge(badgeData, function produceOutput(svg) {
|
||||
badge(badgeData, badgeOpts, function produceOutput(svg) {
|
||||
if (format === 'svg') {
|
||||
console.log(svg);
|
||||
} else if (/png|jpg|gif/.test(format)) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user