-
-
Notifications
You must be signed in to change notification settings - Fork 741
Expand file tree
/
Copy pathRectorContainerFactory.php
More file actions
39 lines (37 loc) · 1.49 KB
/
RectorContainerFactory.php
File metadata and controls
39 lines (37 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
declare (strict_types=1);
namespace Rector\DependencyInjection;
use Rector\Autoloading\BootstrapFilesIncluder;
use Rector\Caching\Detector\ChangedFilesDetector;
use Rector\Config\RectorConfig;
use Rector\ValueObject\Bootstrap\BootstrapConfigs;
final class RectorContainerFactory
{
public function createFromBootstrapConfigs(BootstrapConfigs $bootstrapConfigs): RectorConfig
{
$rectorConfig = $this->createFromConfigs($bootstrapConfigs->getConfigFiles());
$mainConfigFile = $bootstrapConfigs->getMainConfigFile();
if ($mainConfigFile !== null) {
/** @var ChangedFilesDetector $changedFilesDetector */
$changedFilesDetector = $rectorConfig->make(ChangedFilesDetector::class);
$changedFilesDetector->setFirstResolvedConfigFileInfo($mainConfigFile);
}
/** @var BootstrapFilesIncluder $bootstrapFilesIncluder */
$bootstrapFilesIncluder = $rectorConfig->get(BootstrapFilesIncluder::class);
$bootstrapFilesIncluder->includeBootstrapFiles();
return $rectorConfig;
}
/**
* @param string[] $configFiles
*/
private function createFromConfigs(array $configFiles): RectorConfig
{
$lazyContainerFactory = new \Rector\DependencyInjection\LazyContainerFactory();
$rectorConfig = $lazyContainerFactory->create();
foreach ($configFiles as $configFile) {
$rectorConfig->import($configFile);
}
$rectorConfig->boot();
return $rectorConfig;
}
}