aExtensionsByCode = $aExtensionCodesToRemove; $this->Prepare($sSourceEnv, $this->sBuildEnv); } /** * @param string $sSourceEnv * @param string $sBuildEnv * @return void * @throws \MissingDependencyException */ private function Prepare(string $sSourceEnv, string $sBuildEnv) { $this->Cleanup(); SetupUtils::copydir(APPROOT."/data/$sSourceEnv-modules", APPROOT."/data/$sBuildEnv-modules"); SetupUtils::copydir(APPROOT."/conf/$sSourceEnv", APPROOT."/conf/$sBuildEnv"); $this->DeclareExtensionAsRemoved($this->aExtensionsByCode); } private function DeclareExtensionAsRemoved(array $aExtensionCodes): void { $oExtensionsMap = new iTopExtensionsMap($this->sBuildEnv); $oExtensionsMap->DeclareExtensionAsRemoved($aExtensionCodes); } public function Cleanup(): void { $sEnv = $this->sBuildEnv; //keep this folder empty SetupUtils::tidydir(APPROOT."/env-$sEnv"); $aFolders = [ APPROOT."/data/$sEnv-modules", APPROOT."/data/cache-$sEnv", APPROOT."/conf/$sEnv", ]; foreach ($aFolders as $sFolder) { SetupUtils::tidydir($sFolder); SetupUtils::rmdir_safe($sFolder); } $sFiles = [ APPROOT."/data/datamodel-$sEnv.xml", APPROOT."/data/$sEnv.delta.prev.xml", ]; foreach ($sFiles as $sFile) { if (is_file($sFile)) { @unlink($sFile); } } } }