You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.1 KiB
39 lines
1.1 KiB
/** @module env/util */ |
|
'use strict'; |
|
const execa = require('execa'); |
|
const GroupedQueue = require('grouped-queue'); |
|
|
|
/** |
|
* Create a "sloppy" copy of an initial Environment object. The focus of this method is on |
|
* performance rather than correctly deep copying every property or recreating a correct |
|
* instance. Use carefully and don't rely on `hasOwnProperty` of the copied environment. |
|
* |
|
* Every property are shared except the runLoop which is regenerated. |
|
* |
|
* @param {Environment} initialEnv - an Environment instance |
|
* @return {Environment} sloppy copy of the initial Environment |
|
*/ |
|
exports.duplicateEnv = initialEnv => { |
|
const queues = require('../environment').queues; |
|
// Hack: Create a clone of the environment with a new instance of `runLoop` |
|
const env = Object.create(initialEnv); |
|
env.runLoop = new GroupedQueue(queues); |
|
return env; |
|
}; |
|
|
|
exports.execaOutput = (cmg, args, options) => { |
|
try { |
|
const result = execa.sync(cmg, args, options); |
|
if (!result.failed) { |
|
return result.stdout; |
|
} |
|
} catch (_) { |
|
} |
|
return undefined; |
|
}; |
|
|
|
/** |
|
* Log utility |
|
* @see {@link env/log} |
|
*/ |
|
exports.log = require('./log');
|
|
|