Exemple #1
0
 protected function tearDown()
 {
     \Magento\Framework\System\Dirs::rm($this->_packPath);
     $reflection = new \ReflectionClass('Magento\\Framework\\Component\\ComponentRegistrar');
     $paths = $reflection->getProperty('paths');
     $paths->setAccessible(true);
     $paths->setValue($this->backupRegistrar);
     $paths->setAccessible(false);
 }
Exemple #2
0
 /**
  * Convert PEAR package to Magento package
  *
  * @param string $sourceFile Path to PEAR .tgz
  * @param bool|false|string $destFile Path to newly-created Magento .tgz, false to specify auto
  * @throws \Exception
  * @return string
  */
 public function convertPearToMage($sourceFile, $destFile = false)
 {
     try {
         if (!file_exists($sourceFile)) {
             throw new \Exception("File doesn't exist: {$sourceFile}");
         }
         $arc = $this->arc();
         $tempDir = "tmp-" . basename($sourceFile) . uniqid();
         $outDir = "out-" . basename($sourceFile) . uniqid();
         $outDir = rtrim($outDir, "\\/");
         \Magento\Framework\System\Dirs::mkdirStrict($outDir);
         \Magento\Framework\System\Dirs::mkdirStrict($tempDir);
         $result = $arc->unpack($sourceFile, $tempDir);
         if (!$result) {
             throw new \Exception("'{$sourceFile}' was not unpacked");
         }
         $result = rtrim($result, "\\/");
         $packageXml = $result . '/package.xml';
         if (!file_exists($packageXml)) {
             throw new \Exception("No package.xml found inside '{$sourceFile}'");
         }
         $reader = $this->oldPackageReader();
         $data = file_get_contents($packageXml);
         $pearObject = $reader->parsePackage($data, $packageXml);
         $mageObject = $this->convertPackageObject($pearObject);
         if (!$mageObject->validate()) {
             throw new \Exception("Package validation failed.\n" . implode("\n", $mageObject->getErrors()));
         }
         /**
          * Calculate destination file if false
          */
         if (false === $destFile) {
             $pathinfo = pathinfo($sourceFile);
             $destFile = $pathinfo['dirname'] . '/' . $pathinfo['filename'] . '-converted';
             if (isset($pathinfo['extension'])) {
                 $destFile .= "." . $pathinfo['extension'];
             }
         }
         $target = new \Magento\Framework\Connect\Package\Target("target.xml");
         $targets = $target->getTargets();
         $mageObject->setTarget($target);
         $validRoles = array_keys($targets);
         $data = $pearObject->getFilelist();
         $pathSource = dirname($pearObject->getPackageFile()) . '/' . $pearObject->getName() . "-" . $pearObject->getVersion();
         $filesToDo = array();
         foreach ($data as $file => $row) {
             $name = $row['name'];
             $role = $row['role'];
             if (!in_array($role, $validRoles)) {
                 $role = 'mage';
             }
             $baseName = ltrim($targets[$role], "\\/.");
             $baseName = rtrim($baseName, "\\/");
             $sourceFile = $pathSource . '/' . $name;
             $targetFile = $outDir . '/' . $baseName . '/' . $name;
             if (file_exists($sourceFile)) {
                 \Magento\Framework\System\Dirs::mkdirStrict(dirname($targetFile));
                 $copy = @copy($sourceFile, $targetFile);
                 if (false === $copy) {
                     throw new \Exception("Cannot copy '{$sourceFile}' to '{$targetFile}'");
                 }
             }
             $filesToDo[] = array('name' => $name, 'role' => $role);
         }
         $cwd = getcwd();
         @chdir($outDir);
         foreach ($filesToDo as $fileToDo) {
             $mageObject->addContent($fileToDo['name'], $fileToDo['role']);
         }
         $mageObject->save(getcwd());
         @chdir($cwd);
         $filename = $outDir . '/' . $mageObject->getReleaseFilename() . '.tgz';
         if (@file_exists($destFile)) {
             @unlink($destFile);
         }
         \Magento\Framework\System\Dirs::mkdirStrict(dirname($destFile));
         $copy = @copy($filename, $destFile);
         if (false === $copy) {
             throw new \Exception("Cannot copy '{$filename}' to '{$destFile}'");
         }
         \Magento\Framework\System\Dirs::rm($tempDir);
         \Magento\Framework\System\Dirs::rm($outDir);
     } catch (\Exception $e) {
         throw $e;
     }
     return $destFile;
 }
Exemple #3
0
 public function tearDown()
 {
     \Magento\Framework\System\Dirs::rm($this->_varDir);
 }
Exemple #4
0
 /**
  * Package installation to FS
  *
  * @param \Magento\Framework\Connect\Package $package
  * @param string $file
  * @param \Magento\Framework\Connect\Config $configObj
  * @return void
  */
 public function processInstallPackage($package, $file, $configObj)
 {
     $contents = $package->getContents();
     $arc = $this->getArchiver();
     $target = dirname($file) . '/' . $package->getReleaseFilename();
     @mkdir($target, 0777, true);
     $tar = $arc->unpack($file, $target);
     $modeFile = $this->_getFileMode($configObj);
     $modeDir = $this->_getDirMode($configObj);
     $targetPath = rtrim($configObj->magento_root, "\\/");
     foreach ($contents as $file) {
         $fileName = basename($file);
         $filePath = dirname($file);
         $source = $tar . '/' . $file;
         @mkdir($targetPath . '/' . $filePath, $modeDir, true);
         $dest = $targetPath . '/' . $filePath . '/' . $fileName;
         if (is_file($source)) {
             @copy($source, $dest);
             if ($modeFile) {
                 @chmod($dest, $modeFile);
             }
         } else {
             @mkdir($dest, $modeDir);
         }
     }
     $packageXml = $tar . \Magento\Framework\Connect\Package\Reader::DEFAULT_NAME_PACKAGE;
     if (is_file($packageXml)) {
         $destDir = $targetPath . '/' . \Magento\Framework\Connect\Package::PACKAGE_XML_DIR;
         $destFile = $package->getReleaseFilename() . '.xml';
         $dest = $destDir . '/' . $destFile;
         @copy($packageXml, $dest);
         @chmod($dest, $modeFile);
     }
     \Magento\Framework\System\Dirs::rm(array("-r", $target));
 }
Exemple #5
0
 /**
  * Archives package.
  *
  * @return $this
  */
 public function archivePackage()
 {
     $this->_pathToArchive = $this->_getArchivator()->pack($this->_temporaryPackageDir, $this->_namePackage . '.tgz', true);
     //delete temporary dir
     \Magento\Framework\System\Dirs::rm(array("-r", $this->_temporaryPackageDir));
     return $this;
 }
Exemple #6
0
 protected function tearDown()
 {
     \Magento\Framework\System\Dirs::rm($this->_packPath);
 }
Exemple #7
0
 /**
  * Package installation to FS
  * @param \Magento\Framework\Connect\Package $package
  * @param string $file
  * @param Config $configObj
  * @return void
  * @throws \Exception
  */
 public function processInstallPackage($package, $file, $configObj)
 {
     $contents = $package->getContents();
     $arc = $this->getArchiver();
     $target = dirname($file) . '/' . $package->getReleaseFilename();
     @mkdir($target, 0777, true);
     $mode = $configObj->global_dir_mode;
     $tar = $arc->unpack($file, $target);
     $modeFile = $configObj->global_file_mode;
     $modeDir = $configObj->global_dir_mode;
     foreach ($contents as $file) {
         $fileName = basename($file);
         $filePath = dirname($file);
         $source = $tar . '/' . $file;
         $targetPath = rtrim($configObj->magento_root, "\\/");
         @mkdir($targetPath . '/' . $filePath, $modeDir, true);
         $dest = $targetPath . '/' . $filePath . '/' . $fileName;
         if (is_file($source)) {
             @copy($source, $dest);
             if ($modeFile) {
                 @chmod($dest, $modeFile);
             }
         } else {
             @mkdir($dest, $modeDir);
         }
     }
     \Magento\Framework\System\Dirs::rm(array("-r", $target));
 }