mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-24 11:44:14 +01:00
show set path in PHAR (#4112)
This commit is contained in:
parent
c1b2824ab4
commit
57cc6c31ce
@ -6,10 +6,7 @@ namespace Rector\Core\Console\Command;
|
||||
|
||||
use Rector\Core\Application\ActiveRectorsProvider;
|
||||
use Rector\Core\Configuration\Option;
|
||||
use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
|
||||
use Rector\Core\Contract\Rector\RectorInterface;
|
||||
use Rector\Core\NeonYaml\YamlPrinter;
|
||||
use ReflectionClass;
|
||||
use Rector\Core\Console\Output\RectorConfigurationFormatter;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||
@ -24,11 +21,6 @@ final class ShowCommand extends AbstractCommand
|
||||
*/
|
||||
private $symfonyStyle;
|
||||
|
||||
/**
|
||||
* @var YamlPrinter
|
||||
*/
|
||||
private $yamlPrinter;
|
||||
|
||||
/**
|
||||
* @var ActiveRectorsProvider
|
||||
*/
|
||||
@ -39,18 +31,24 @@ final class ShowCommand extends AbstractCommand
|
||||
*/
|
||||
private $parameterProvider;
|
||||
|
||||
/**
|
||||
* @var RectorConfigurationFormatter
|
||||
*/
|
||||
private $rectorConfigurationFormatter;
|
||||
|
||||
public function __construct(
|
||||
SymfonyStyle $symfonyStyle,
|
||||
ActiveRectorsProvider $activeRectorsProvider,
|
||||
ParameterProvider $parameterProvider,
|
||||
YamlPrinter $yamlPrinter
|
||||
RectorConfigurationFormatter $rectorConfigurationFormatter
|
||||
) {
|
||||
$this->symfonyStyle = $symfonyStyle;
|
||||
$this->yamlPrinter = $yamlPrinter;
|
||||
$this->activeRectorsProvider = $activeRectorsProvider;
|
||||
$this->parameterProvider = $parameterProvider;
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->rectorConfigurationFormatter = $rectorConfigurationFormatter;
|
||||
}
|
||||
|
||||
protected function configure(): void
|
||||
@ -78,7 +76,7 @@ final class ShowCommand extends AbstractCommand
|
||||
|
||||
foreach ($activeRectors as $rector) {
|
||||
$this->symfonyStyle->writeln(' * ' . get_class($rector));
|
||||
$this->printConfiguration($rector);
|
||||
$this->rectorConfigurationFormatter->printRectorConfiguration($rector);
|
||||
}
|
||||
|
||||
$message = sprintf('%d loaded Rectors', $rectorCount);
|
||||
@ -108,54 +106,14 @@ final class ShowCommand extends AbstractCommand
|
||||
|
||||
foreach ($sets as $set) {
|
||||
$filename = realpath($set);
|
||||
// resolve fallback for PHAR
|
||||
if ($filename === false) {
|
||||
$filename = $set;
|
||||
}
|
||||
$this->symfonyStyle->writeln(' * ' . $filename);
|
||||
}
|
||||
|
||||
$message = sprintf('%d loaded sets', count($sets));
|
||||
$this->symfonyStyle->success($message);
|
||||
}
|
||||
|
||||
private function printConfiguration(RectorInterface $rector): void
|
||||
{
|
||||
$configuration = $this->resolveConfiguration($rector);
|
||||
if ($configuration === []) {
|
||||
return;
|
||||
}
|
||||
|
||||
$configurationYamlContent = $this->yamlPrinter->printYamlToString($configuration);
|
||||
|
||||
$lines = explode(PHP_EOL, $configurationYamlContent);
|
||||
$indentedContent = ' ' . implode(PHP_EOL . ' ', $lines);
|
||||
|
||||
$this->symfonyStyle->writeln($indentedContent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve configuration by convention
|
||||
* @return mixed[]
|
||||
*/
|
||||
private function resolveConfiguration(RectorInterface $rector): array
|
||||
{
|
||||
if (! $rector instanceof ConfigurableRectorInterface) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$reflectionClass = new ReflectionClass($rector);
|
||||
|
||||
$configuration = [];
|
||||
foreach ($reflectionClass->getProperties() as $reflectionProperty) {
|
||||
$reflectionProperty->setAccessible(true);
|
||||
|
||||
$configurationValue = $reflectionProperty->getValue($rector);
|
||||
|
||||
// probably service → skip
|
||||
if (is_object($configurationValue)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$configuration[$reflectionProperty->getName()] = $configurationValue;
|
||||
}
|
||||
|
||||
return $configuration;
|
||||
}
|
||||
}
|
||||
|
74
src/Console/Output/RectorConfigurationFormatter.php
Normal file
74
src/Console/Output/RectorConfigurationFormatter.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Rector\Core\Console\Output;
|
||||
|
||||
use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
|
||||
use Rector\Core\Contract\Rector\RectorInterface;
|
||||
use Rector\Core\NeonYaml\YamlPrinter;
|
||||
use ReflectionClass;
|
||||
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||
|
||||
final class RectorConfigurationFormatter
|
||||
{
|
||||
/**
|
||||
* @var YamlPrinter
|
||||
*/
|
||||
private $yamlPrinter;
|
||||
|
||||
/**
|
||||
* @var SymfonyStyle
|
||||
*/
|
||||
private $symfonyStyle;
|
||||
|
||||
public function __construct(YamlPrinter $yamlPrinter, SymfonyStyle $symfonyStyle)
|
||||
{
|
||||
$this->yamlPrinter = $yamlPrinter;
|
||||
$this->symfonyStyle = $symfonyStyle;
|
||||
}
|
||||
|
||||
public function printRectorConfiguration(RectorInterface $rector): void
|
||||
{
|
||||
$configuration = $this->resolveConfiguration($rector);
|
||||
if ($configuration === []) {
|
||||
return;
|
||||
}
|
||||
|
||||
$configurationYamlContent = $this->yamlPrinter->printYamlToString($configuration);
|
||||
|
||||
$lines = explode(PHP_EOL, $configurationYamlContent);
|
||||
$indentedContent = ' ' . implode(PHP_EOL . ' ', $lines);
|
||||
|
||||
$this->symfonyStyle->writeln($indentedContent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve configuration by convention
|
||||
* @return mixed[]
|
||||
*/
|
||||
private function resolveConfiguration(RectorInterface $rector): array
|
||||
{
|
||||
if (! $rector instanceof ConfigurableRectorInterface) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$reflectionClass = new ReflectionClass($rector);
|
||||
|
||||
$configuration = [];
|
||||
foreach ($reflectionClass->getProperties() as $reflectionProperty) {
|
||||
$reflectionProperty->setAccessible(true);
|
||||
|
||||
$configurationValue = $reflectionProperty->getValue($rector);
|
||||
|
||||
// probably service → skip
|
||||
if (is_object($configurationValue)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$configuration[$reflectionProperty->getName()] = $configurationValue;
|
||||
}
|
||||
|
||||
return $configuration;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user