summaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/pkginfo/lib/pkginfo.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/pkginfo/lib/pkginfo.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/pkginfo/lib/pkginfo.js136
1 files changed, 136 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/pkginfo/lib/pkginfo.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/pkginfo/lib/pkginfo.js
new file mode 100644
index 00000000..c5dc0203
--- /dev/null
+++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/pkginfo/lib/pkginfo.js
@@ -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
+}); \ No newline at end of file