logo.svg
Version:
Generate a svg logo, then you can embed it in you README.md
76 lines (55 loc) • 1.42 kB
JavaScript
;
var fs = require('fs');
var path = require('path');
var loadrc = require('loadrc');
var Text2svg = require('text2svg');
var fonts = require('./fonts');
var defauts = require('./defaults');
exports.generate = function (options, hasExternal) {
if (hasExternal) {
options = merge(defauts, options);
} else {
options = merge(defauts, loadrc.load('logorc'), options);
}
if (!options.desc) {
options.desc = 'Generated by logo.svg, https://github.com/bubkoo/logo.svg';
}
var font = fonts.getFontPath(options.font);
var logo = parseLogoName(options);
var parser = new Text2svg(font);
if (parser) {
return parser.toSVG(logo, options).svg;
}
};
// helpers
// -------
function parseLogoName(options) {
var logo = options.logo || getPackageName();
if (!logo) {
throw new Error('You must specify the logo name');
}
return logo;
}
function getPackageName() {
var pkgPath = path.join(process.cwd(), 'package.json');
try {
var pkg = require(pkgPath);
return pkg.name || '';
} catch (e) {
return '';
}
}
function merge() {
var sources = [].slice.call(arguments);
var result = {};
sources.forEach(function (source) {
if (source) {
for (var name in source) {
if ({}.hasOwnProperty.call(source, name)) {
result[name] = source[name];
}
}
}
});
return result;
}