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.
51 lines
1.3 KiB
51 lines
1.3 KiB
/*! |
|
* 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'); |
|
};
|
|
|