bashka/bricks_cli_call

Слой абстракции для выполнения системных вызовов

v1.0.0 2018-01-13 17:14 UTC

README

Формирование системного вызова:

use Bricks\Cli\Call\Call;
use Bricks\Cli\Call\Flag;
use Bricks\Cli\Call\Parameter;
use Bricks\Cli\Call\Value;

$call = new Call(
  '/usr/bin/ffmpeg',
  [
    new Parameter('i', 'input.mp4', ['prefix' => '-', 'glue' => ' ']),
    new Parameter('c:v', 'copy', ['prefix' => '-', 'glue' => ' ', 'escape' => false]),
    new Parameter('c:a', 'aac', ['prefix' => '-', 'glue' => ' ', 'escape' => false]),
    new Flag('y'),
    new Value('output.mp4')
  ]
);

echo $call; // /usr/bin/ffmpeg -i 'input.mp4' -c:v copy -c:a aac -y 'output.mp4'

Выполнение системного вызова:

use Bricks\Cli\Call\Exception\CallException;

// Create $call

try{
  $stdout = $call->exec();
  // ...
}
catch(CallException $exc){
  $code = $exc->getCode();
  $stderr = $exc->getMessage();
  // ...
}

Использование сборщика для создания системного вызова:

use Bricks\Cli\Call\CallBuilder;

$call = (new CallBuilder('/usr/bin/ffmpeg'))
  ->parameter('i', 'input.mp4', ['prefix' => '-', 'glue' => ' '])
  ->parameter('c:v', 'copy', ['prefix' => '-', 'glue' => ' ', 'escape' => false])
  ->parameter('c:a', 'aac', ['prefix' => '-', 'glue' => ' ', 'escape' => false])
  ->flag('y')
  ->value('output.mp4')
  ->build();

echo $call; // /usr/bin/ffmpeg -i 'input.mp4' -c:v copy -c:a aac -y 'output.mp4'