diff options
| author | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
|---|---|---|
| committer | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
| commit | 5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch) | |
| tree | 360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/cross-spawn/lib/util | |
| parent | b500a50f1b97d93c98b36ed9a980f8188d648147 (diff) | |
| download | LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip  | |
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/cross-spawn/lib/util')
| -rw-r--r-- | node_modules/cross-spawn/lib/util/escape.js | 45 | ||||
| -rw-r--r-- | node_modules/cross-spawn/lib/util/readShebang.js | 23 | ||||
| -rw-r--r-- | node_modules/cross-spawn/lib/util/resolveCommand.js | 52 | 
3 files changed, 120 insertions, 0 deletions
diff --git a/node_modules/cross-spawn/lib/util/escape.js b/node_modules/cross-spawn/lib/util/escape.js new file mode 100644 index 0000000..b0bb84c --- /dev/null +++ b/node_modules/cross-spawn/lib/util/escape.js @@ -0,0 +1,45 @@ +'use strict'; + +// See http://www.robvanderwoude.com/escapechars.php +const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; + +function escapeCommand(arg) { +    // Escape meta chars +    arg = arg.replace(metaCharsRegExp, '^$1'); + +    return arg; +} + +function escapeArgument(arg, doubleEscapeMetaChars) { +    // Convert to string +    arg = `${arg}`; + +    // Algorithm below is based on https://qntm.org/cmd + +    // Sequence of backslashes followed by a double quote: +    // double up all the backslashes and escape the double quote +    arg = arg.replace(/(\\*)"/g, '$1$1\\"'); + +    // Sequence of backslashes followed by the end of the string +    // (which will become a double quote later): +    // double up all the backslashes +    arg = arg.replace(/(\\*)$/, '$1$1'); + +    // All other backslashes occur literally + +    // Quote the whole thing: +    arg = `"${arg}"`; + +    // Escape meta chars +    arg = arg.replace(metaCharsRegExp, '^$1'); + +    // Double escape meta chars if necessary +    if (doubleEscapeMetaChars) { +        arg = arg.replace(metaCharsRegExp, '^$1'); +    } + +    return arg; +} + +module.exports.command = escapeCommand; +module.exports.argument = escapeArgument; diff --git a/node_modules/cross-spawn/lib/util/readShebang.js b/node_modules/cross-spawn/lib/util/readShebang.js new file mode 100644 index 0000000..5e83733 --- /dev/null +++ b/node_modules/cross-spawn/lib/util/readShebang.js @@ -0,0 +1,23 @@ +'use strict'; + +const fs = require('fs'); +const shebangCommand = require('shebang-command'); + +function readShebang(command) { +    // Read the first 150 bytes from the file +    const size = 150; +    const buffer = Buffer.alloc(size); + +    let fd; + +    try { +        fd = fs.openSync(command, 'r'); +        fs.readSync(fd, buffer, 0, size, 0); +        fs.closeSync(fd); +    } catch (e) { /* Empty */ } + +    // Attempt to extract shebang (null is returned if not a shebang) +    return shebangCommand(buffer.toString()); +} + +module.exports = readShebang; diff --git a/node_modules/cross-spawn/lib/util/resolveCommand.js b/node_modules/cross-spawn/lib/util/resolveCommand.js new file mode 100644 index 0000000..7972455 --- /dev/null +++ b/node_modules/cross-spawn/lib/util/resolveCommand.js @@ -0,0 +1,52 @@ +'use strict'; + +const path = require('path'); +const which = require('which'); +const getPathKey = require('path-key'); + +function resolveCommandAttempt(parsed, withoutPathExt) { +    const env = parsed.options.env || process.env; +    const cwd = process.cwd(); +    const hasCustomCwd = parsed.options.cwd != null; +    // Worker threads do not have process.chdir() +    const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled; + +    // If a custom `cwd` was specified, we need to change the process cwd +    // because `which` will do stat calls but does not support a custom cwd +    if (shouldSwitchCwd) { +        try { +            process.chdir(parsed.options.cwd); +        } catch (err) { +            /* Empty */ +        } +    } + +    let resolved; + +    try { +        resolved = which.sync(parsed.command, { +            path: env[getPathKey({ env })], +            pathExt: withoutPathExt ? path.delimiter : undefined, +        }); +    } catch (e) { +        /* Empty */ +    } finally { +        if (shouldSwitchCwd) { +            process.chdir(cwd); +        } +    } + +    // If we successfully resolved, ensure that an absolute path is returned +    // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it +    if (resolved) { +        resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved); +    } + +    return resolved; +} + +function resolveCommand(parsed) { +    return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); +} + +module.exports = resolveCommand;  | 
