6 declare(strict_types=1);
10 use Composer\IO\IOInterface;
22 private $deploymentConfig;
36 $deploymentConfig = $this->getDeploymentConfig($projectDir);
37 if ($this->isModulesConfigured($deploymentConfig)) {
38 $deploymentConfigWriter = $this->createDeploymentConfigWriter($projectDir);
41 $deploymentConfigWriter,
49 private function isModulesConfigured(
DeploymentConfig $deploymentConfig): bool
54 private function getDeploymentConfig(
string $projectDir): DeploymentConfig
56 $cacheKey = realpath($projectDir);
57 if (!isset($this->deploymentConfig[$cacheKey])) {
58 $this->deploymentConfig[$cacheKey] = $this->createDeploymentConfig($projectDir);
60 return $this->deploymentConfig[$cacheKey];
63 private function createDeploymentConfig(
string $projectDir): DeploymentConfig
65 $deploymentConfigReader = $this->createDeploymentConfigReader($projectDir);
70 private function createDeploymentConfigReader(
string $projectDir): DeploymentConfig\Reader
72 $dirList = $this->createDirectoryList($projectDir);
73 $filesystemDriverPool = $this->createFilesystemDriverPool();
74 $configFilePool = $this->createConfigFilePool();
75 $reader =
new DeploymentConfig\Reader(
77 $filesystemDriverPool,
83 private function createDeploymentConfigWriter(
string $projectDir): DeploymentConfig\
Writer 85 $deploymentConfigReader = $this->createDeploymentConfigReader($projectDir);
86 $configFilePool = $this->createConfigFilePool();
88 $dirList = $this->createDirectoryList($projectDir);
89 $filesystemDriverPool = $this->createFilesystemDriverPool();
90 $filesystemReader =
new Filesystem\Directory\ReadFactory($filesystemDriverPool);
91 $filesystemWriter =
new Filesystem\Directory\WriteFactory($filesystemDriverPool);
98 $deploymentConfigWriter =
new DeploymentConfig\Writer(
99 $deploymentConfigReader,
104 return $deploymentConfigWriter;
107 private function createDirectoryList(
string $projectDir): DirectoryList
111 $dirList =
new DirectoryList($projectDir, $dirsConfig);
115 private function createFilesystemDriverPool(): DriverPool
117 $driverPool =
new DriverPool();
121 private function createConfigFilePool(): ConfigFilePool
123 $configFilePool =
new ConfigFilePool();
124 return $configFilePool;
if(!file_exists($installConfigFile)) $dirList
static getDefaultConfig()
createConfigurator(string $projectDir)
__construct(IOInterface $io)