<?php

require_once __DIR__ . '/../vendor/autoload.php';
$cmd1 = ['sleep 2; echo', '"Hello World"'];
$cmd2 = ['sleep 4; echo', '"Second Command'];
$cmd3 = new \rikanishu\multiprocess\Command('cat');
$cmd3->setStdin("Something");
$pool = new rikanishu\multiprocess\Pool([$cmd1, $cmd2, $cmd3]);
$pool->setDebugEnabled(true);
$pool->run();
foreach ($pool->getCommands() as $cmd) {
    print_r($cmd->getExecutionResult());
}
$cmd3 = ['echo "$SOME_ENV_VAR" "$PWD"', [rikanishu\multiprocess\Command::OPTION_CWD => '/tmp', rikanishu\multiprocess\Command::OPTION_ENV => ['SOME_ENV_VAR' => 'PWD is:']]];
$cmd4 = new rikanishu\multiprocess\Command('cat');
$cmd4->setStdin('hello world');
$pool = new rikanishu\multiprocess\Pool([$cmd1, $cmd2, $cmd3, $cmd4]);
$pool->run();
/* @var $command rikanishu\multiprocess\Command */
foreach ($pool->getCommands() as $command) {
    $res = $command->getExecutionResult();
    echo $res->getExitCode() . " | " . $res->getStdout() . " | " . $res->getStderr() . "\n";
}
/*  Output:
    0 | Some Command |
    0 | Another Command |
    0 | PWD is: /tmp |
    0 | hello world |
*/
/* If you haven't checked isExecuted and get the execution result for non-executed command,
   NonExecutedException will be raised */
$commands = $pool->getCommands();
$commands[0]->getExecutionResult()->getOutput();
// Some Command
$commands[1]->getExecutionResult()->getOutput();
// Another Command
$commands[2]->getExecutionResult()->getOutput();
// PWD is: /tmp
$commands[3]->getExecutionResult()->getOutput();
// hello world
/* And also library provides single command execution */
$command = new rikanishu\multiprocess\Command('echo "Hello World!"');
$command->runBlocking()->getOutput();
// Hello World