mirror of
https://github.com/Retropex/umbrel-bitcoin.git
synced 2025-05-12 19:20:49 +02:00
57 lines
1.2 KiB
JavaScript
57 lines
1.2 KiB
JavaScript
const childProcess = require('child_process');
|
|
|
|
// Sets environment variables on container.
|
|
// Env should not contain sensitive data, because environment variables are not secure.
|
|
function extendProcessEnv(env) {
|
|
Object.keys(env).map(function(objectKey) { // eslint-disable-line array-callback-return
|
|
process.env[objectKey] = env[objectKey];
|
|
});
|
|
}
|
|
|
|
// Executes docker-compose command with common options
|
|
const exec = (command, args, opts) => new Promise((resolve, reject) => {
|
|
const options = opts || {};
|
|
|
|
const cwd = options.cwd || null;
|
|
|
|
if (options.env) {
|
|
extendProcessEnv(options.env);
|
|
}
|
|
|
|
const childProc = childProcess.spawn(command, args, {cwd});
|
|
|
|
childProc.on('error', err => {
|
|
reject(err);
|
|
});
|
|
|
|
const result = {
|
|
err: '',
|
|
out: ''
|
|
};
|
|
|
|
childProc.stdout.on('data', chunk => {
|
|
result.out += chunk.toString();
|
|
});
|
|
|
|
childProc.stderr.on('data', chunk => {
|
|
result.err += chunk.toString();
|
|
});
|
|
|
|
childProc.on('close', code => {
|
|
if (code === 0) {
|
|
resolve(result);
|
|
} else {
|
|
reject(result.err);
|
|
}
|
|
});
|
|
|
|
if (options.log) {
|
|
childProc.stdout.pipe(process.stdout);
|
|
childProc.stderr.pipe(process.stderr);
|
|
}
|
|
});
|
|
|
|
module.exports = {
|
|
exec,
|
|
};
|