• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const path = require('path');
3const pathKey = require('path-key');
4
5module.exports = opts => {
6	opts = Object.assign({
7		cwd: process.cwd(),
8		path: process.env[pathKey()]
9	}, opts);
10
11	let prev;
12	let pth = path.resolve(opts.cwd);
13	const ret = [];
14
15	while (prev !== pth) {
16		ret.push(path.join(pth, 'node_modules/.bin'));
17		prev = pth;
18		pth = path.resolve(pth, '..');
19	}
20
21	// ensure the running `node` binary is used
22	ret.push(path.dirname(process.execPath));
23
24	return ret.concat(opts.path).join(path.delimiter);
25};
26
27module.exports.env = opts => {
28	opts = Object.assign({
29		env: process.env
30	}, opts);
31
32	const env = Object.assign({}, opts.env);
33	const path = pathKey({env});
34
35	opts.path = env[path];
36	env[path] = module.exports(opts);
37
38	return env;
39};
40