HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/tana/frontend/node_modules/concurrently/test/utils.js
'use strict';
const childProcess = require('child_process');
const _ = require('lodash');
const readline = require('readline');
const shellQuote = require('shell-quote');

// If true, output of commands are shown
const DEBUG_TESTS = process.env.DEBUG_TESTS === 'true';

function run(cmd, opts) {
    opts = _.merge({
        // If set to a function, it will be called for each line
        // written to the child process's stdout as (line, child)
        onOutputLine: undefined,
        onErrorLine: undefined
    }, opts);

    let child;
    const parts = shellQuote.parse(cmd);
    try {
        child = childProcess.spawn(_.head(parts), _.tail(parts), {
            stdio: DEBUG_TESTS && !opts.onOutputLine ? 'inherit': null,
        });
    } catch (e) {
        return Promise.reject(e);
    }

    if (opts.onOutputLine) {
        readLines(child, opts.onOutputLine);
    }

    if (opts.onErrorLine) {
        readLines(child, opts.onErrorLine, 'stderr');
    }

    readLines(child, (l) => { console.log(l); }, 'stderr');

    return new Promise(function(resolve, reject) {
        child.on('error', function(err) {
            reject(err);
        });

        child.on('close', function(exitCode) {
            resolve(exitCode);
        });
    });
}

function readLines(child, callback, src) {
    src = src || 'stdout';

    const rl = readline.createInterface({
        input: child[src],
        output: null
    });

    rl.on('line', function(line) {
        if (DEBUG_TESTS) {
            console.log(line);
        }

        callback(line, child);
    });
}

module.exports = {
    run: run
};