| 'use strict'; | 
| const path = require('path'); | 
| const pathKey = require('path-key'); | 
|   | 
| module.exports = opts => { | 
|     opts = Object.assign({ | 
|         cwd: process.cwd(), | 
|         path: process.env[pathKey()] | 
|     }, opts); | 
|   | 
|     let prev; | 
|     let pth = path.resolve(opts.cwd); | 
|     const ret = []; | 
|   | 
|     while (prev !== pth) { | 
|         ret.push(path.join(pth, 'node_modules/.bin')); | 
|         prev = pth; | 
|         pth = path.resolve(pth, '..'); | 
|     } | 
|   | 
|     // ensure the running `node` binary is used | 
|     ret.push(path.dirname(process.execPath)); | 
|   | 
|     return ret.concat(opts.path).join(path.delimiter); | 
| }; | 
|   | 
| module.exports.env = opts => { | 
|     opts = Object.assign({ | 
|         env: process.env | 
|     }, opts); | 
|   | 
|     const env = Object.assign({}, opts.env); | 
|     const path = pathKey({env}); | 
|   | 
|     opts.path = env[path]; | 
|     env[path] = module.exports(opts); | 
|   | 
|     return env; | 
| }; |