recursiveCopy() 공개 메소드

public recursiveCopy ( string $src, string $dst, string[] $blacklist = [] ) : void
$src string
$dst string
$blacklist string[]
리턴 void
예제 #1
0
 public function testRecursiveCopyWithBlacklist()
 {
     $tmp = sys_get_temp_dir();
     $basePath = $tmp . "/n98_testdir";
     $folder1 = $basePath . "/folder1";
     $folder2 = $basePath . "/folder2";
     $file1 = $folder1 . "/file1.txt";
     $ignoreMe = $folder1 . "/ignore.me";
     $file2 = $folder2 . "/file2.txt";
     $dest = sys_get_temp_dir() . "/n98_copy_dest";
     @mkdir($folder1, 0777, true);
     @mkdir($folder2, 0777, true);
     touch($file1);
     touch($file2);
     $this->fileSystem->recursiveCopy($basePath, $dest, array('ignore.me'));
     $this->assertFileExists($dest . "/folder1/file1.txt");
     $this->assertFileExists($dest . "/folder2/file2.txt");
     $this->assertFileNotExists($dest . "/folder1/ignore.me");
     //cleanup
     unlink($file1);
     unlink($file2);
     rmdir($folder1);
     rmdir($folder2);
     rmdir($basePath);
     unlink($dest . "/folder1/file1.txt");
     unlink($dest . "/folder2/file2.txt");
     rmdir($dest . "/folder1");
     rmdir($dest . "/folder2");
     rmdir($dest);
 }
예제 #2
0
 protected function _fixComposerExtractionBug()
 {
     $filesystem = new Filesystem();
     $mediaFolder = $this->config['installationFolder'] . '/media';
     $wrongFolder = $this->config['installationFolder'] . '/_temp_demo_data/media';
     if (is_dir($wrongFolder)) {
         $filesystem->recursiveCopy($wrongFolder, $mediaFolder);
         $filesystem->recursiveRemoveDirectory($wrongFolder);
     }
 }
예제 #3
0
 /**
  * @param InputInterface $input
  * @param OutputInterface $output
  * @return bool
  */
 public function downloadMagento(InputInterface $input, OutputInterface $output)
 {
     try {
         $package = $this->createComposerPackageByConfig($this->config['magentoVersionData']);
         $this->config['magentoPackage'] = $package;
         if (file_exists($this->config['installationFolder'] . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'Mage.php')) {
             $output->writeln('<error>A magento installation already exists in this folder </error>');
             return false;
         }
         $composer = $this->getComposer($input, $output);
         $targetFolder = $this->getTargetFolderByType($composer, $package, $this->config['installationFolder']);
         $this->config['magentoPackage'] = $this->downloadByComposerConfig($input, $output, $package, $targetFolder, true);
         if ($this->isSourceTypeRepository($package->getSourceType())) {
             $filesystem = new \N98\Util\Filesystem();
             $filesystem->recursiveCopy($targetFolder, $this->config['installationFolder'], array('.git', '.hg'));
         } else {
             $filesystem = new \Composer\Util\Filesystem();
             $filesystem->copyThenRemove($this->config['installationFolder'] . '/_n98_magerun_download', $this->config['installationFolder']);
         }
         if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
             // Patch installer
             $this->patchMagentoInstallerForPHP54($this->config['installationFolder']);
         }
     } catch (\Exception $e) {
         $output->writeln('<error>' . $e->getMessage() . '</error>');
         return false;
     }
     return true;
 }
예제 #4
0
 protected function _fixComposerExtractionBug()
 {
     $filesystem = new Filesystem();
     foreach (array('/_temp_demo_data/media' => '/media', '/_temp_demo_data/skin' => '/skin') as $wrong => $right) {
         $wrongFolder = $this->config['installationFolder'] . $wrong;
         $rightFolder = $this->config['installationFolder'] . $right;
         if (is_dir($wrongFolder)) {
             $filesystem->recursiveCopy($wrongFolder, $rightFolder);
             $filesystem->recursiveRemoveDirectory($wrongFolder);
         }
     }
 }