diff options
Diffstat (limited to 'deps/npm/lib/utils/escape-arg.js')
-rw-r--r-- | deps/npm/lib/utils/escape-arg.js | 27 |
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 + } + } +} |