Sha256: a716e5484ad75179a9e9de561b32e0c665d0837a399c4fae295ddc10e6d7644a

Contents?: true

Size: 1.3 KB

Versions: 73

Compression:

Stored size: 1.3 KB

Contents

'use strict';

const path = require('path');
const which = require('which');
const pathKey = require('path-key')();

function resolveCommandAttempt(parsed, withoutPathExt) {
    const cwd = process.cwd();
    const hasCustomCwd = parsed.options.cwd != null;

    // 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 (hasCustomCwd) {
        try {
            process.chdir(parsed.options.cwd);
        } catch (err) {
            /* Empty */
        }
    }

    let resolved;

    try {
        resolved = which.sync(parsed.command, {
            path: (parsed.options.env || process.env)[pathKey],
            pathExt: withoutPathExt ? path.delimiter : undefined,
        });
    } catch (e) {
        /* Empty */
    } finally {
        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;

Version data entries

73 entries across 71 versions & 11 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/webpack-cli/node_modules/cross-spawn/lib/util/resolveCommand.js
optimacms-0.1.61 spec/dummy/node_modules/execa/node_modules/cross-spawn/lib/util/resolveCommand.js
disco_app-0.18.0 test/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js
disco_app-0.18.2 test/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js
disco_app-0.16.1 test/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js
disco_app-0.15.2 test/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js
disco_app-0.18.4 test/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js
disco_app-0.18.1 test/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js
disco_app-0.14.0 test/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js
tang-0.2.1 spec/tang_app/node_modules/cross-spawn/lib/util/resolveCommand.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/cross-spawn/lib/util/resolveCommand.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/cross-spawn/lib/util/resolveCommand.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/cross-spawn/lib/util/resolveCommand.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/cross-spawn/lib/util/resolveCommand.js
tang-0.2.0 spec/tang_app/node_modules/cross-spawn/lib/util/resolveCommand.js
tang-0.1.0 spec/tang_app/node_modules/cross-spawn/lib/util/resolveCommand.js
tang-0.0.9 spec/tang_app/node_modules/cross-spawn/lib/util/resolveCommand.js
enju_library-0.3.8 spec/dummy/node_modules/cross-spawn/lib/util/resolveCommand.js