getExitCodeText() public method

This method relies on the Unix exit code status standardization and might not be relevant for other operating systems.
See also: http://tldp.org/LDP/abs/html/exitcodes.html
See also: http://en.wikipedia.org/wiki/Unix_signal
public getExitCodeText ( ) : null | string
return null | string A string representation for the exit status code, null if the Process is not terminated
示例#1
0
文件: ShellQueue.php 项目: nike/beez
 public function run(OutputInterface $output)
 {
     foreach ($this->queue as $command) {
         $process = new Process($command);
         if ($process->run()) {
             $output->writeln(sprintf('<error>%s:</error>', $process->getExitCodeText()));
             $output->writeln('');
             $output->writeln(sprintf('<error>%s</error>', $process->getErrorOutput()));
             return $process->getExitCode();
         } else {
             $output->writeln(sprintf('<info>%s</info>', $process->getExitCodeText()));
         }
     }
     // Ok
     return 0;
 }
 public function __construct(Process $process)
 {
     if ($process->isSuccessful()) {
         throw new InvalidArgumentException('Expected a failed process, but the given process was successful.');
     }
     parent::__construct(sprintf('The command "%s" failed.' . "\nExit Code: %s(%s)\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s", $process->getCommandLine(), $process->getExitCode(), $process->getExitCodeText(), $process->getOutput(), $process->getErrorOutput()));
     $this->process = $process;
 }
示例#3
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $commandLine = $input->getArgument('command-line');
     if ($this->forced) {
         $process = new Process($commandLine);
         if ($process->run()) {
             $output->writeln(sprintf('<error>%s:</error>', $process->getExitCodeText()));
             $output->writeln('');
             $output->writeln(sprintf('<error>%s</error>', $process->getErrorOutput()));
             return $process->getExitCode();
         } else {
             $output->writeln(sprintf('<info>%s</info>', $process->getExitCodeText()));
         }
     } else {
         $output->writeln($commandLine);
     }
     // Ok
     return 0;
 }
 protected function handleProcessResult(Process $process)
 {
     $this->processObjectList[] = $process;
     if ($process->getExitCode() !== 0) {
         $message = $messageEnd = 'process for <code>' . $process->getCommandLine() . '</code> exited with ' . $process->getExitCode() . ': ' . $process->getExitCodeText();
         $message .= PHP_EOL . 'Error Message:' . PHP_EOL . $process->getErrorOutput();
         $message .= PHP_EOL . 'Output:' . PHP_EOL . $process->getOutput();
         $message .= PHP_EOL . $messageEnd;
         throw new \Exception($message, $process->getExitCode());
     }
 }
示例#5
0
 /**
  * @param string          $command The command string
  * @param OutputInterface $output  An output instance
  *
  * @return int Process exit code
  */
 private function processRestore($command, OutputInterface $output)
 {
     $process = new Process($command);
     $output->writeln('<info>Start restore database, it may take some time...</info>');
     $process->run(function ($type, $buff) use($output) {
         $message = $type === Process::ERR ? '<comment>%s</comment>' : '<info>%s</info>';
         $output->writeln(sprintf($message, trim($buff)));
     });
     if (0 === ($exitCode = $process->getExitCode())) {
         $output->writeln(sprintf('<info>%s</info>', 'Restore completed!'));
     } else {
         $output->writeln(sprintf('<error>Restore failed: %s!</error>', $process->getExitCodeText()));
     }
     return $exitCode;
 }
示例#6
0
 /**
  * @param string          $command The command string
  * @param string          $filename
  * @param bool|string     $gzip
  * @param OutputInterface $output  An output instance
  *
  * @return int Process exit code
  */
 private function processBackup($command, $filename, $gzip, OutputInterface $output)
 {
     if ($gzip !== false) {
         $command .= ' | gzip > ' . $filename . '.gz';
     } else {
         $command .= ' > ' . $filename;
     }
     $process = new Process($command);
     $output->writeln('<info>Start backup database, it may take some time...</info>');
     $process->run(function ($type, $buff) use($output) {
         $message = $type === Process::ERR ? '<comment>%s</comment>' : '<info>%s</info>';
         $output->writeln(sprintf($message, trim($buff)));
     });
     if (0 === ($exitCode = $process->getExitCode())) {
         $output->writeln(sprintf('<info>%s</info>', 'Backup completed!'));
     } else {
         $output->writeln(sprintf('<error>Backup failed: %s!</error>', $process->getExitCodeText()));
     }
     return $exitCode;
 }
 /**
  * {@inheritdoc}
  */
 public function execute(InputInterface $input, OutputInterface $output)
 {
     if (!$input->getOption('build-folder') && $input->getOption('format')) {
         throw new \RuntimeException('Please provide a build folder');
     }
     if ($input->getOption('build-folder') && !is_writable($input->getOption('build-folder'))) {
         throw new \RuntimeException(sprintf('The build folder %s is not writable', $input->getOption('build-folder')));
     }
     if (!is_dir($input->getArgument('folder'))) {
         throw new \RuntimeException(sprintf('The folder %s does not exist', $input->getArgument('folder')));
     }
     $buildFolder = realpath($input->getOption('build-folder'));
     $output->writeln(sprintf(" >> Running Behat at <info>%s</info>", $input->getArgument('folder')));
     $formats = array('pretty' => '.log', 'progress' => '.log', 'html' => '.html', 'junit' => '', 'failed' => '.log', 'snippets' => '.log');
     if ($input->getOption('format') && !array_key_exists($input->getOption('format'), $formats)) {
         throw new \RuntimeException(sprintf('Invalid format', $input->getOption('format')));
     }
     $cliOptions = array();
     if ($input->getOption('format')) {
         $cliOptions[] = sprintf('--format %s --out %s/behat%s', $input->getOption('format'), $buildFolder, $formats[$input->getOption('format')]);
     }
     $cmd = sprintf("cd %s && php behat.phar %s", $input->getArgument('folder'), implode(" ", $cliOptions));
     $output->writeln(sprintf("Starting command: %s", $cmd));
     $process = new Process($cmd);
     $process->setTimeout(null);
     $out = "";
     // allows to nicely log data ....
     $process->run(function ($type, $data) use(&$out) {
         $out .= $data;
     });
     if ($process->getExitCode() !== 0) {
         $output->writeln(explode("\n", $out));
         $output->writeln("");
         $output->writeln(sprintf("<question>Exit code: %s (%s)</question>", $process->getExitCodeText(), $process->getExitCode()));
         $output->writeln("\n");
     } else {
         $output->writeln(" >> Tests OK !");
     }
     return $process->getExitCode() === 0;
 }
示例#8
0
 /**
  * @param string $resourcePath
  * @param string $targetPath
  * @param \PhantomPdf\Options $options
  * @throws \PhantomPdf\PhantomPdfException
  *
  * @return void
  */
 protected function convertToPdf($resourcePath, $targetPath, Options $options)
 {
     $command = $this->createCommand($resourcePath, $targetPath, $options);
     $process = new Process($command);
     if ($this->timeout !== null) {
         $process->setTimeout($this->timeout);
     }
     $process->run();
     $error = $process->getErrorOutput();
     if ($error !== null) {
         throw new PhantomPdfException($error . ' ' . $process->getExitCodeText());
     }
 }
示例#9
0
 /**
  * @param \Symfony\Component\Process\Process $process
  *
  * @return \Spatie\DbDumper\Exceptions\DumpFailed
  */
 public static function processDidNotEndSuccessfully(Process $process)
 {
     return new static("The dump process failed with exitcode {$process->getExitCode()} : {$process->getExitCodeText()} : {$process->getErrorOutput()}");
 }
示例#10
0
 public function exec($cmd, $chdir = null)
 {
     $nl = true;
     //
     $output = $this->output;
     $process = new Process($cmd, $chdir);
     $process->setTimeout(null);
     $process->start();
     $code = $process->wait(function ($type, $data) use($output, &$nl) {
         if ($nl === true) {
             $data = "\n" . $data;
             $nl = false;
         }
         if (substr($data, -1) === "\n") {
             $nl = true;
             $data = substr($data, 0, -1);
         }
         $data = str_replace("\n", "\n    ", $data);
         $output($data);
     });
     if ($nl) {
         $this->log('');
     }
     if ($code !== 0) {
         throw new UnexpectedValueException('Error status code: ' . $process->getExitCodeText() . ' (code ' . $code . ')');
     }
 }
 private function getMediaInfo($file)
 {
     $command = str_replace('{{file}}', $file, $this->command);
     $process = new Process($command);
     $process->setTimeout(60);
     $process->run();
     if (!$process->isSuccessful()) {
         throw new \RuntimeException('Exception executing "' . $command . '": ' . $process->getExitCode() . ' ' . $process->getExitCodeText() . '. ' . $process->getErrorOutput());
     }
     return $process->getOutput();
 }
示例#12
0
 /**
  * composerExecute - execute a command using composer
  *
  * @param string $command_line command to pass to composer, i.e. 'update'
  *
  * @return boolean true on success, false if command failed or could not execute
  */
 public function composerExecute($command_line)
 {
     $this->output = array();
     $this->errors = array();
     $options = ' ' . trim($this->exeOptions) . ' ';
     if (empty($this->exe)) {
         $exeFinder = new PhpExecutableFinder();
         $foundExe = $exeFinder->find();
         if ($foundExe) {
             $this->exe = $foundExe . ' composer.phar';
         } else {
             $this->errors[] = 'Cannot find PHP executable';
             return false;
         }
     }
     if (!chdir(\XoopsBaseConfig::get('lib-path'))) {
         $this->errors[] = 'Cannot change directory to lib-path';
         return false;
     }
     set_time_limit(300);
     // don't want this script to timeout;
     $command = $this->exe . $options . $command_line;
     putenv('COMPOSER_HOME=' . \XoopsBaseConfig::get('var-path') . '/composer');
     $process = new Process($command);
     //$process->setEnv(array('COMPOSER_HOME' => \XoopsBaseConfig::get('var-path').'/composer'));
     $process->setTimeout(120);
     try {
         $process->run(function ($type, $buffer) use(&$errors, &$output) {
             if ('err' === $type) {
                 $errors[] = $buffer;
             } else {
                 $this->output[] = $buffer;
             }
         });
     } catch (\Exception $e) {
         $errors[] = $e->getMessage();
     }
     if ($process->isSuccessful()) {
         return true;
     } else {
         $this->errors[] = 'Failed: ' . $command;
         $this->errors[] = sprintf("Process exit code: %s, '%s'", $process->getExitCode(), $process->getExitCodeText());
     }
     return false;
 }
 /**
  * @param Process $process
  * @return string[]
  */
 protected function formatProcess(Process $process)
 {
     return ['[process] ' . $process->getCommandLine(), '[code]    ' . $process->getExitCode(), '[text]    ' . $process->getExitCodeText(), '[stderr]  ' . trim($process->getErrorOutput()), '[stdout]  ' . trim($process->getOutput())];
 }
 /**
  * @param string          $folder
  * @param InputInterface  $input
  * @param OutputInterface $output
  * @param string          $buildFolder
  *
  * @return bool
  */
 protected function runPHPunit($folder, InputInterface $input, OutputInterface $output, $buildFolder)
 {
     $output->writeln(sprintf(" >> Running PHPUnit at <info>%s</info>", $folder));
     $cliOptions = array();
     if ($input->getOption('junit')) {
         $cliOptions[] = sprintf('--log-junit %s/junit.xml', $buildFolder);
     }
     if ($input->getOption('clover')) {
         $cliOptions[] = sprintf('--coverage-clover %s/clover.xml', $buildFolder);
     }
     $cmd = sprintf("cd %s && phpunit %s", $folder, implode(" ", $cliOptions));
     $output->writeln(sprintf(" >> PHPUnit command %s", $cmd));
     $process = new Process($cmd);
     $process->setTimeout(null);
     $out = "";
     // allows to nicely log data ....
     $process->run(function ($type, $data) use(&$out) {
         $out .= $data;
     });
     if ($process->getExitCode() !== 0) {
         $output->writeln(explode("\n", $out));
         $output->writeln("");
         $output->writeln(sprintf("<question>Exit code: %s (%s)</question>", $process->getExitCodeText(), $process->getExitCode()));
         $output->writeln("\n");
     } else {
         $output->writeln(" >> Tests OK !");
     }
     return $process->getExitCode() === 0;
 }
 /**
  * Runs the given command in the given working directory.
  *
  * @param string $command command to execute (please escape arguments via e.g. using ProcessUtils::escapeArgument())
  * @param string $working_directory
  *
  * @return array with "exitcode", "exitcode_text", "stdout", "stderr" and "success" flag
  *
  * @throws \InvalidArgumentException when working directory is not readable
  * @throws \Symfony\Component\Process\Exception\RuntimeException on errors executing the command
  */
 public static function runCommand($command, $working_directory)
 {
     if (!is_readable($working_directory)) {
         throw new InvalidArgumentException('Given working directory is not readable: ' . $working_directory);
     }
     $result = array('cmd' => $command, 'stdout' => '', 'stderr' => '', 'success' => false);
     $process = new Process($command, $working_directory);
     $process->setTimeout(300);
     $process->run();
     $result['exitcode'] = $process->getExitCode();
     $result['exitcode_text'] = $process->getExitCodeText();
     $result['stdout'] = $process->getOutput();
     $result['stderr'] = $process->getErrorOutput();
     $result['success'] = $process->isSuccessful();
     return $result;
 }