| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- 'use strict'
 
- const path = require('path')
 
- const log = require('./log')
 
- function findNodeDirectory (scriptLocation, processObj) {
 
-   // set dirname and process if not passed in
 
-   // this facilitates regression tests
 
-   if (scriptLocation === undefined) {
 
-     scriptLocation = __dirname
 
-   }
 
-   if (processObj === undefined) {
 
-     processObj = process
 
-   }
 
-   // Have a look to see what is above us, to try and work out where we are
 
-   const npmParentDirectory = path.join(scriptLocation, '../../../..')
 
-   log.verbose('node-gyp root', 'npm_parent_directory is ' +
 
-               path.basename(npmParentDirectory))
 
-   let nodeRootDir = ''
 
-   log.verbose('node-gyp root', 'Finding node root directory')
 
-   if (path.basename(npmParentDirectory) === 'deps') {
 
-     // We are in a build directory where this script lives in
 
-     // deps/npm/node_modules/node-gyp/lib
 
-     nodeRootDir = path.join(npmParentDirectory, '..')
 
-     log.verbose('node-gyp root', 'in build directory, root = ' +
 
-                 nodeRootDir)
 
-   } else if (path.basename(npmParentDirectory) === 'node_modules') {
 
-     // We are in a node install directory where this script lives in
 
-     // lib/node_modules/npm/node_modules/node-gyp/lib or
 
-     // node_modules/npm/node_modules/node-gyp/lib depending on the
 
-     // platform
 
-     if (processObj.platform === 'win32') {
 
-       nodeRootDir = path.join(npmParentDirectory, '..')
 
-     } else {
 
-       nodeRootDir = path.join(npmParentDirectory, '../..')
 
-     }
 
-     log.verbose('node-gyp root', 'in install directory, root = ' +
 
-                 nodeRootDir)
 
-   } else {
 
-     // We don't know where we are, try working it out from the location
 
-     // of the node binary
 
-     const nodeDir = path.dirname(processObj.execPath)
 
-     const directoryUp = path.basename(nodeDir)
 
-     if (directoryUp === 'bin') {
 
-       nodeRootDir = path.join(nodeDir, '..')
 
-     } else if (directoryUp === 'Release' || directoryUp === 'Debug') {
 
-       // If we are a recently built node, and the directory structure
 
-       // is that of a repository. If we are on Windows then we only need
 
-       // to go one level up, everything else, two
 
-       if (processObj.platform === 'win32') {
 
-         nodeRootDir = path.join(nodeDir, '..')
 
-       } else {
 
-         nodeRootDir = path.join(nodeDir, '../..')
 
-       }
 
-     }
 
-     // Else return the default blank, "".
 
-   }
 
-   return nodeRootDir
 
- }
 
- module.exports = findNodeDirectory
 
 
  |