You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
52 lines
1.3 KiB
6 years ago
|
/*!
|
||
|
* sum-up | MIT (c) Shinnosuke Watanabe
|
||
|
* https://github.com/shinnn/sum-up
|
||
|
*/
|
||
|
'use strict';
|
||
|
|
||
|
var util = require('util');
|
||
|
|
||
|
var Chalk = require('chalk').constructor;
|
||
|
|
||
|
module.exports = function sumUp(pkgData) {
|
||
|
if (!pkgData || Array.isArray(pkgData) || typeof pkgData !== 'object') {
|
||
|
throw new TypeError(
|
||
|
util.inspect(pkgData).replace(/\n/g, '') +
|
||
|
' is not a plain object. Expected an object of package information,' +
|
||
|
' for example npm\'s package.json `{name: ... version: ..., description: ..., ...}`.'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
if (pkgData.color !== undefined && typeof pkgData.color !== 'boolean') {
|
||
|
throw new TypeError(
|
||
|
util.inspect(pkgData.color).replace(/\n/g, '') +
|
||
|
' is neither true nor false. `color` option must be a Boolean value.'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
var chalk = new Chalk({enabled: pkgData.color});
|
||
|
var lines = [];
|
||
|
|
||
|
var nameAndVersion = chalk.cyan(pkgData.name || '');
|
||
|
if (pkgData.version) {
|
||
|
if (pkgData.name) {
|
||
|
nameAndVersion += ' ';
|
||
|
}
|
||
|
nameAndVersion += chalk.gray('v' + pkgData.version);
|
||
|
}
|
||
|
|
||
|
if (nameAndVersion) {
|
||
|
lines.push(nameAndVersion);
|
||
|
}
|
||
|
|
||
|
if (pkgData.homepage) {
|
||
|
lines.push(chalk.gray(pkgData.homepage));
|
||
|
}
|
||
|
|
||
|
if (pkgData.description) {
|
||
|
lines.push(pkgData.description);
|
||
|
}
|
||
|
|
||
|
return lines.join('\n');
|
||
|
};
|