/
githubmirror
/
magento2
Обзор
Документация
Войти
/
githubmirror
/
magento2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.4-develop
lib/internal/Magento/Framework/App/Shell.php
75 строк
2 KB
Alexandra Zota
ACP2E-4019: CE copyright updates for 2.4.9-beta1
22 окт 2025, 17:47
22 окт 2025, 17:47
1b769b7
Код
Авторство
О чём код?
<?php /** * Copyright 2016 Adobe * All Rights Reserved. */ namespace Magento\Framework\App; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Phrase; use Magento\Framework\Shell\CommandRendererInterface; use Magento\Framework\Shell\Driver; use Magento\Framework\ShellInterface; use Psr\Log\LoggerInterface; /** * Class is separate from \Magento|Framework\Shell because logging behavior is different, and relies on ObjectManager * being available. */ class Shell implements ShellInterface { /** * @var \Magento\Framework\Shell\Driver */ private $driver; /** * @var \Psr\Log\LoggerInterface */ private $logger; /** * @param Driver $driver * @param CommandRendererInterface $commandRenderer * @param LoggerInterface $logger */ public function __construct( Driver $driver, LoggerInterface $logger ) { $this->driver = $driver; $this->logger = $logger; } /** * Execute a command through the command line, passing properly escaped arguments * * @param string $command Command with optional argument markers '%s' * @param string[] $arguments Argument values to substitute markers with * @throws \Magento\Framework\Exception\LocalizedException If a command returns non-zero exit code * @return string */ public function execute($command, array $arguments = []) { try { $response = $this->driver->execute($command, $arguments); } catch (LocalizedException $e) { $this->logger->error($e->getLogMessage()); throw $e; } $escapedCommand = $response->getEscapedCommand(); $output = $response->getOutput(); $exitCode = $response->getExitCode(); $logEntry = $escapedCommand . PHP_EOL . $output; if ($exitCode) { $this->logger->error($logEntry); $commandError = new \Exception($output, $exitCode); throw new LocalizedException( new Phrase("Command returned non-zero exit code:\n`%1`", [$command]), $commandError ); } $this->logger->info($logEntry); return $output; } }