mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
Changes
This commit is contained in:
136
node_modules/pkginfo/lib/pkginfo.js
generated
vendored
Normal file
136
node_modules/pkginfo/lib/pkginfo.js
generated
vendored
Normal file
@ -0,0 +1,136 @@
|
||||
/*
|
||||
* pkginfo.js: Top-level include for the pkginfo module
|
||||
*
|
||||
* (C) 2011, Charlie Robbins
|
||||
*
|
||||
*/
|
||||
|
||||
var fs = require('fs'),
|
||||
path = require('path');
|
||||
|
||||
//
|
||||
// ### function pkginfo ([options, 'property', 'property' ..])
|
||||
// #### @pmodule {Module} Parent module to read from.
|
||||
// #### @options {Object|Array|string} **Optional** Options used when exposing properties.
|
||||
// #### @arguments {string...} **Optional** Specified properties to expose.
|
||||
// Exposes properties from the package.json file for the parent module on
|
||||
// it's exports. Valid usage:
|
||||
//
|
||||
// `require('pkginfo')()`
|
||||
//
|
||||
// `require('pkginfo')('version', 'author');`
|
||||
//
|
||||
// `require('pkginfo')(['version', 'author']);`
|
||||
//
|
||||
// `require('pkginfo')({ include: ['version', 'author'] });`
|
||||
//
|
||||
var pkginfo = module.exports = function (pmodule, options) {
|
||||
var args = [].slice.call(arguments, 2).filter(function (arg) {
|
||||
return typeof arg === 'string';
|
||||
});
|
||||
|
||||
//
|
||||
// **Parse variable arguments**
|
||||
//
|
||||
if (Array.isArray(options)) {
|
||||
//
|
||||
// If the options passed in is an Array assume that
|
||||
// it is the Array of properties to expose from the
|
||||
// on the package.json file on the parent module.
|
||||
//
|
||||
options = { include: options };
|
||||
}
|
||||
else if (typeof options === 'string') {
|
||||
//
|
||||
// Otherwise if the first argument is a string, then
|
||||
// assume that it is the first property to expose from
|
||||
// the package.json file on the parent module.
|
||||
//
|
||||
options = { include: [options] };
|
||||
}
|
||||
|
||||
//
|
||||
// **Setup default options**
|
||||
//
|
||||
options = options || {};
|
||||
|
||||
// ensure that includes have been defined
|
||||
options.include = options.include || [];
|
||||
|
||||
if (args.length > 0) {
|
||||
//
|
||||
// If additional string arguments have been passed in
|
||||
// then add them to the properties to expose on the
|
||||
// parent module.
|
||||
//
|
||||
options.include = options.include.concat(args);
|
||||
}
|
||||
|
||||
var pkg = pkginfo.read(pmodule, options.dir).package;
|
||||
Object.keys(pkg).forEach(function (key) {
|
||||
if (options.include.length > 0 && !~options.include.indexOf(key)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!pmodule.exports[key]) {
|
||||
pmodule.exports[key] = pkg[key];
|
||||
}
|
||||
});
|
||||
|
||||
return pkginfo;
|
||||
};
|
||||
|
||||
//
|
||||
// ### function find (dir)
|
||||
// #### @pmodule {Module} Parent module to read from.
|
||||
// #### @dir {string} **Optional** Directory to start search from.
|
||||
// Searches up the directory tree from `dir` until it finds a directory
|
||||
// which contains a `package.json` file.
|
||||
//
|
||||
pkginfo.find = function (pmodule, dir) {
|
||||
if (! dir) {
|
||||
dir = path.dirname(pmodule.filename);
|
||||
}
|
||||
|
||||
var files = fs.readdirSync(dir);
|
||||
|
||||
if (~files.indexOf('package.json')) {
|
||||
return path.join(dir, 'package.json');
|
||||
}
|
||||
|
||||
if (dir === '/') {
|
||||
throw new Error('Could not find package.json up from: ' + dir);
|
||||
}
|
||||
else if (!dir || dir === '.') {
|
||||
throw new Error('Cannot find package.json from unspecified directory');
|
||||
}
|
||||
|
||||
return pkginfo.find(pmodule, path.dirname(dir));
|
||||
};
|
||||
|
||||
//
|
||||
// ### function read (pmodule, dir)
|
||||
// #### @pmodule {Module} Parent module to read from.
|
||||
// #### @dir {string} **Optional** Directory to start search from.
|
||||
// Searches up the directory tree from `dir` until it finds a directory
|
||||
// which contains a `package.json` file and returns the package information.
|
||||
//
|
||||
pkginfo.read = function (pmodule, dir) {
|
||||
dir = pkginfo.find(pmodule, dir);
|
||||
|
||||
var data = fs.readFileSync(dir).toString();
|
||||
|
||||
return {
|
||||
dir: dir,
|
||||
package: JSON.parse(data)
|
||||
};
|
||||
};
|
||||
|
||||
//
|
||||
// Call `pkginfo` on this module and expose version.
|
||||
//
|
||||
pkginfo(module, {
|
||||
dir: __dirname,
|
||||
include: ['version'],
|
||||
target: pkginfo
|
||||
});
|
Reference in New Issue
Block a user