summaryrefslogtreecommitdiff
path: root/deps/npm/lib/install/report-optional-failure.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/install/report-optional-failure.js')
-rw-r--r--deps/npm/lib/install/report-optional-failure.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/deps/npm/lib/install/report-optional-failure.js b/deps/npm/lib/install/report-optional-failure.js
new file mode 100644
index 0000000000..41c7c535bd
--- /dev/null
+++ b/deps/npm/lib/install/report-optional-failure.js
@@ -0,0 +1,31 @@
+'use strict'
+var path = require('path')
+var moduleName = require('../utils/module-name.js')
+
+module.exports = reportOptionalFailure
+
+function top (tree) {
+ if (tree.parent) return top(tree.parent)
+ return tree
+}
+
+function reportOptionalFailure (tree, what, error) {
+ var topTree = top(tree)
+ if (!topTree.warnings) topTree.warnings = []
+ var id
+ if (what) {
+ var depVer = tree.package.dependencies && tree.package.dependencies[what]
+ var optDepVer = tree.package.optionalDependencies && tree.package.optionalDependencies[what]
+ var devDepVer = tree.package.devDependencies && tree.package.devDependencies[what]
+ var version = depVer || optDepVer || devDepVer
+ id = what + (version ? '@' + version : '')
+ } else {
+ id = tree._id || moduleName(tree) + (tree.package.version ? '@' + tree.package.version : '')
+ }
+ var location = path.relative(topTree.path, tree.path)
+ if (what) location = path.join(location, 'node_modules', what)
+
+ error.optional = id
+ error.location = location
+ topTree.warnings.push(error)
+}