summaryrefslogtreecommitdiff
path: root/deps/npm/lib/utils/escape-arg.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/utils/escape-arg.js')
-rw-r--r--deps/npm/lib/utils/escape-arg.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/deps/npm/lib/utils/escape-arg.js b/deps/npm/lib/utils/escape-arg.js
new file mode 100644
index 0000000000..d12ee5edf5
--- /dev/null
+++ b/deps/npm/lib/utils/escape-arg.js
@@ -0,0 +1,27 @@
+'use strict'
+var path = require('path')
+var isWindowsShell = require('./is-windows-shell.js')
+
+/*
+Escape the name of an executable suitable for passing to the system shell.
+
+Windows is easy, wrap in double quotes and you're done, as there's no
+facility to create files with quotes in their names.
+
+Unix-likes are a little more complicated, wrap in single quotes and escape
+any single quotes in the filename.
+*/
+
+module.exports = escapify
+
+function escapify (str) {
+ if (isWindowsShell) {
+ return '"' + path.normalize(str) + '"'
+ } else {
+ if (/[^-_.~/\w]/.test(str)) {
+ return "'" + str.replace(/'/g, "'\"'\"'") + "'"
+ } else {
+ return str
+ }
+ }
+}