1
0
Fork 0

Fix some todos dropping support for older Symfony releases

pull/10420/head
Jordi Boggiano 2022-01-03 14:51:41 +01:00
parent efa08e7791
commit 5805a68645
No known key found for this signature in database
GPG Key ID: 7BBD42C429EC80BC
11 changed files with 22 additions and 101 deletions

View File

@ -13,8 +13,6 @@ parameters:
- '../tests/Composer/Test/Autoload/Fixtures/*'
- '../tests/Composer/Test/Plugin/Fixtures/*'
- '../tests/Composer/Test/PolyfillTestCase.php'
# TODO Remove in 2.3
- '../src/Composer/Console/HtmlOutputFormatter.php'
reportUnmatchedIgnoredErrors: false

View File

@ -266,13 +266,7 @@ abstract class BaseCommand extends Command
$renderer = new Table($output);
$renderer->setStyle('compact');
$rendererStyle = $renderer->getStyle();
if (method_exists($rendererStyle, 'setVerticalBorderChars')) {
$rendererStyle->setVerticalBorderChars('');
} else {
// TODO remove in composer 2.2
// @phpstan-ignore-next-line
$rendererStyle->setVerticalBorderChar('');
}
$rendererStyle->setCellRowContentFormat('%s ');
$renderer->setRows($table)->render();
}
@ -282,20 +276,9 @@ abstract class BaseCommand extends Command
*/
protected function getTerminalWidth()
{
if (class_exists('Symfony\Component\Console\Terminal')) {
$terminal = new Terminal();
$width = $terminal->getWidth();
} else {
// For versions of Symfony console before 3.2
// TODO remove in composer 2.2
// @phpstan-ignore-next-line
list($width) = $this->getApplication()->getTerminalDimensions();
}
if (null === $width) {
// In case the width is not detected, we're probably running the command
// outside of a real terminal, use space without a limit
$width = PHP_INT_MAX;
}
if (Platform::isWindows()) {
$width--;
} else {

View File

@ -731,13 +731,7 @@ EOT
$finder = new ExecutableFinder();
$gitBin = $finder->find('git');
// TODO in v2.3 always call with an array
if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) {
$cmd = new Process(array($gitBin, 'config', '-l'));
} else {
// @phpstan-ignore-next-line
$cmd = new Process(sprintf('%s config -l', ProcessExecutor::escape($gitBin)));
}
$cmd->run();
if ($cmd->isSuccessful()) {

View File

@ -85,13 +85,7 @@ EOT
$table = new Table($output);
$table->setStyle('compact');
$tableStyle = $table->getStyle();
if (method_exists($tableStyle, 'setVerticalBorderChars')) {
$tableStyle->setVerticalBorderChars('');
} else {
// TODO remove in composer 2.2
// @phpstan-ignore-next-line
$tableStyle->setVerticalBorderChar('');
}
$tableStyle->setCellRowContentFormat('%s ');
$table->setHeaders(array('Name', 'Version', 'License'));
foreach ($packages as $package) {

View File

@ -64,13 +64,7 @@ class Compiler
$this->versionDate = new \DateTime(trim($process->getOutput()));
$this->versionDate->setTimezone(new \DateTimeZone('UTC'));
// TODO in v2.3 always call with an array
if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) {
$process = new Process(array('git', 'describe', '--tags', '--exact-match', 'HEAD'), __DIR__);
} else {
// @phpstan-ignore-next-line
$process = new Process('git describe --tags --exact-match HEAD');
}
if ($process->run() == 0) {
$this->version = trim($process->getOutput());
} else {

View File

@ -440,8 +440,7 @@ class Application extends BaseApplication
} catch (\InvalidArgumentException $e) {
if ($required) {
$this->io->writeError($e->getMessage());
// TODO composer 2.3 simplify to $this->areExceptionsCaught()
if (!method_exists($this, 'areExceptionsCaught') || $this->areExceptionsCaught()) {
if ($this->areExceptionsCaught()) {
exit(1);
}
throw $e;

View File

@ -12,6 +12,7 @@
namespace Composer\Console;
use Closure;
use Composer\Pcre\Preg;
use Symfony\Component\Console\Formatter\OutputFormatter;
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
@ -64,18 +65,19 @@ class HtmlOutputFormatter extends OutputFormatter
{
$formatted = parent::format($message);
if ($formatted === null) {
return null;
}
$clearEscapeCodes = '(?:39|49|0|22|24|25|27|28)';
// TODO in 2.3 replace with Closure::fromCallable and then use Preg::replaceCallback
return preg_replace_callback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", array($this, 'formatHtml'), $formatted);
return Preg::replaceCallback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", Closure::fromCallable([$this, 'formatHtml']), $formatted);
}
/**
* @param string[] $matches
*
* @return string
*/
private function formatHtml($matches)
private function formatHtml(array $matches): string
{
$out = '<span style="';
foreach (explode(';', $matches[1]) as $code) {

View File

@ -323,18 +323,10 @@ class EventDispatcher
break;
}
}
} catch (\Exception $e) { // TODO Composer 2.2 turn all this into a finally
} finally {
$this->popEvent();
throw $e;
} catch (\Throwable $e) {
$this->popEvent();
throw $e;
}
$this->popEvent();
return $returnMax;
}

View File

@ -518,13 +518,7 @@ class Perforce
{
$command = $this->generateP4Command(' login -a');
// TODO in v3 generate command as an array
if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) {
$process = Process::fromShellCommandline($command, null, null, $password);
} else {
// @phpstan-ignore-next-line
$process = new Process($command, null, null, $password);
}
return $process->run();
}

View File

@ -115,16 +115,6 @@ class ProcessExecutor
$this->io->writeError('Executing command ('.($cwd ?: 'CWD').'): '.$safeCommand);
}
// TODO in 2.2, these two checks can be dropped as Symfony 4+ supports them out of the box
// make sure that null translate to the proper directory in case the dir is a symlink
// and we call a git command, because msysgit does not handle symlinks properly
if (null === $cwd && Platform::isWindows() && false !== strpos($command, 'git') && getcwd()) {
$cwd = realpath(getcwd());
}
if (null !== $cwd && !is_dir($cwd)) {
throw new \RuntimeException('The given CWD for the process does not exist: '.$cwd);
}
$this->captureOutput = func_num_args() > 3;
$this->errorOutput = '';
@ -181,8 +171,6 @@ class ProcessExecutor
$job['reject'] = $reject;
};
$self = $this;
$canceler = function () use (&$job) {
if ($job['status'] === ProcessExecutor::STATUS_QUEUED) {
$job['status'] = ProcessExecutor::STATUS_ABORTED;
@ -204,21 +192,20 @@ class ProcessExecutor
};
$promise = new Promise($resolver, $canceler);
$promise = $promise->then(function () use (&$job, $self) {
$promise = $promise->then(function () use (&$job) {
if ($job['process']->isSuccessful()) {
$job['status'] = ProcessExecutor::STATUS_COMPLETED;
} else {
$job['status'] = ProcessExecutor::STATUS_FAILED;
}
// TODO 3.0 this should be done directly on $this when PHP 5.3 is dropped
$self->markJobDone();
$this->markJobDone();
return $job['process'];
}, function ($e) use (&$job, $self) {
}, function ($e) use (&$job) {
$job['status'] = ProcessExecutor::STATUS_FAILED;
$self->markJobDone();
$this->markJobDone();
throw $e;
});
@ -261,16 +248,6 @@ class ProcessExecutor
$this->io->writeError('Executing async command ('.($cwd ?: 'CWD').'): '.$safeCommand);
}
// TODO in 2.2, these two checks can be dropped as Symfony 4+ supports them out of the box
// make sure that null translate to the proper directory in case the dir is a symlink
// and we call a git command, because msysgit does not handle symlinks properly
if (null === $cwd && Platform::isWindows() && false !== strpos($command, 'git') && getcwd()) {
$cwd = realpath(getcwd());
}
if (null !== $cwd && !is_dir($cwd)) {
throw new \RuntimeException('The given CWD for the process does not exist: '.$cwd);
}
try {
// TODO in v3, commands should be passed in as arrays of cmd + args
if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) {

View File

@ -85,13 +85,7 @@ class AllFunctionalTest extends TestCase
}
}
// TODO in v2.3 always call with an array
if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) {
$proc = new Process(array((defined('PHP_BINARY') ? PHP_BINARY : 'php'), '-dphar.readonly=0', './bin/compile'), $target);
} else {
// @phpstan-ignore-next-line
$proc = new Process((defined('PHP_BINARY') ? escapeshellcmd(PHP_BINARY) : 'php').' -dphar.readonly=0 '.escapeshellarg('./bin/compile'), $target);
}
$proc = new Process([PHP_BINARY, '-dphar.readonly=0', './bin/compile'], $target);
$exitcode = $proc->run();
if ($exitcode !== 0 || trim($proc->getOutput())) {