Exemple #1
0
 /**
  * Test composer post autoload dump event.
  *
  * @return void
  */
 public function testPostAutoloadDump()
 {
     Plugin::load('DebugKit');
     if (!defined('DS')) {
         define('DS', DIRECTORY_SEPARATOR);
     }
     if (!defined('TMP')) {
         define('TMP', sys_get_temp_dir() . DS);
     }
     $vendorDir = ROOT . 'vendor';
     $webRoot = $vendorDir . '/cakephp/debug_kit/webroot';
     $assetsDir = $vendorDir . '/cakephp/debug_kit/assets';
     if (!is_dir($webRoot) && is_dir($assetsDir)) {
         $debugWebroot = new Folder($assetsDir);
         $debugWebroot->copy($webRoot);
         $debugWebroot->delete($assetsDir);
     }
     $composer = new Composer();
     /** @var Config $config */
     $config = new Config();
     $config->merge(['config' => ['vendor-dir' => $vendorDir]]);
     $composer->setConfig($config);
     /** @var IOInterface $io */
     $io = $this->getMock('Composer\\IO\\IOInterface');
     $event = new Event('postAutoloadDump', $composer, $io);
     Installer::postAutoloadDump($event);
     Plugin::unload('DebugKit');
 }
 protected function _publish($option)
 {
     $folderElement = new Folder(Plugin::path('TwitterBootstrap') . DS . 'src' . DS . 'Template' . DS . 'Element');
     switch ($option) {
         case 'all':
             $folderElement->copy(APP . 'Template' . DS . 'Element', false);
             break;
     }
     $this->out('Arquivos publicados');
 }
 public function installTheme($theme)
 {
     if (!Plugin::loaded($theme)) {
         throw new \Exception('Plugin não foi carregado.');
     }
     if (!file_exists(WWW_ROOT . 'theme' . DS . $theme) or Configure::read('debug')) {
         $handler = new Folder();
         $handler->copy(['to' => WWW_ROOT . 'theme' . DS . $theme, 'from' => Plugin::path($theme) . 'webroot' . DS . '_assets', 'mode' => 0755, 'scheme' => Folder::OVERWRITE]);
         return true;
     }
     return false;
 }
Exemple #4
0
 /**
  * Reload DebugKit plugin.
  *
  * @param string $vendorDir
  */
 protected static function _reloadDebugKitPlugin($vendorDir)
 {
     $webRoot = $vendorDir . '/cakephp/debug_kit/webroot';
     $assetsDir = $vendorDir . '/cakephp/debug_kit/assets';
     if (is_dir($webRoot)) {
         //  Transport js styles.
         $debugWebroot = new Folder($webRoot);
         $debugWebroot->copy($assetsDir);
         $debugWebroot->delete($webRoot);
     }
     //  Rewrite include scripts.
     $debugFilterFile = $vendorDir . '/cakephp/debug_kit/src/Routing/Filter/DebugBarFilter.php';
     if (file_exists($debugFilterFile)) {
         $debugFilter = new File($debugFilterFile);
         $debugFilter->replaceText("Router::url('/debug_kit/js/toolbar.js')", "vPath()->url('DebugKit:assets/js/toolbar.js')");
     }
     //  Reload default DebugKit AjaxView.
     $debugViewFile = $vendorDir . '/cakephp/debug_kit/src/View/AjaxView.php';
     if (file_exists($debugViewFile)) {
         $debugView = new File($debugViewFile);
         $debugView->replaceText('use Cake\\View\\View;', '');
         $debugView->replaceText('extends View', 'extends \\Union\\App\\View\\AjaxView');
     }
 }
 /**
  * Copies the extracted package to its final destination.
  *
  * @param bool $clearDestination Set to true to delete the destination directory
  *  if already exists. Defaults to false; an error will occur if destination
  *  already exists. Useful for upgrade tasks
  * @return bool True on success
  */
 protected function _copyPackage($clearDestination = false)
 {
     $source = new Folder($this->_workingDir);
     $destinationPath = normalizePath(ROOT . "/plugins/{$this->_plugin['name']}/");
     // allow to install from destination folder
     if ($this->_workingDir === $destinationPath) {
         return true;
     }
     if (!$clearDestination && is_readable($destinationPath)) {
         $this->err(__d('installer', 'Destination directory already exists, please delete manually this directory: {0}', $destinationPath));
         return false;
     } elseif ($clearDestination && is_readable($destinationPath)) {
         $destination = new Folder($destinationPath);
         if (!$destination->delete()) {
             $this->err(__d('installer', 'Destination directory could not be cleared, please check write permissions: {0}', $destinationPath));
             return false;
         }
     }
     if ($source->copy(['to' => $destinationPath])) {
         return true;
     }
     $this->err(__d('installer', 'Error when moving package content.'));
     return false;
 }
Exemple #6
0
 /**
  * Copy directory
  *
  * @param string $source Source directory
  * @param string $destination Destination directory
  * @return bool
  */
 protected function _copyDirectory($source, $destination)
 {
     $folder = new Folder($source);
     if ($folder->copy(['to' => $destination])) {
         $this->out('Copied assets to directory ' . $destination);
         return true;
     }
     $this->err('Error copying assets to directory ' . $destination);
     return false;
 }
Exemple #7
0
 /**
  * Dump static files
  *
  * @param DOMDocument $domDocument
  *
  * @throws \Exception
  */
 protected function dumpStaticFiles(DOMDocument $domDocument)
 {
     $xpath = new DOMXPath($domDocument);
     $assetsNodeList = $xpath->query('/assetic/static/files/file');
     $validFlags = ['GLOB_MARK' => GLOB_MARK, 'GLOB_NOSORT' => GLOB_NOSORT, 'GLOB_NOCHECK' => GLOB_NOCHECK, 'GLOB_NOESCAPE' => GLOB_NOESCAPE, 'GLOB_BRACE' => GLOB_BRACE, 'GLOB_ONLYDIR' => GLOB_ONLYDIR, 'GLOB_ERR' => GLOB_ERR];
     /** @var $assetNode DOMElement */
     foreach ($assetsNodeList as $assetNode) {
         $source = strtr($assetNode->getElementsByTagName('source')->item(0)->nodeValue, $this->paths);
         $destination = strtr($assetNode->getElementsByTagName('destination')->item(0)->nodeValue, $this->paths);
         $flag = $assetNode->getElementsByTagName('source')->item(0)->getAttribute('flag');
         if (empty($flag)) {
             $flag = null;
         } else {
             if (!array_key_exists($flag, $validFlags)) {
                 throw new \Exception(sprintf('This flag "%s" not valid.', $flag));
             }
             $flag = $validFlags[$flag];
         }
         $des = new Folder(WWW_ROOT . $destination, true, 0777);
         $allFiles = glob($source, $flag);
         foreach ($allFiles as $src) {
             if (is_dir($src)) {
                 $srcFolder = new Folder($src);
                 $srcFolder->copy($des->pwd());
             } else {
                 $srcFile = new File($src);
                 $srcFile->copy($des->path . DS . $srcFile->name);
             }
             $this->out($src . ' <info> >>> </info> ' . WWW_ROOT . $destination);
         }
     }
 }
Exemple #8
0
 /**
  * Does some routine installation tasks so people don't have to.
  *
  * @param \Composer\Script\Event $event The composer event object.
  * @throws \Exception Exception raised by validator.
  * @return void
  */
 public static function postUpdate(Event $event)
 {
     $io = $event->getIO();
     $rootDir = dirname(dirname(__DIR__));
     $jqueryVendorDir = $rootDir . '/vendor/components/jquery';
     $jqueryWebrootDir = $rootDir . '/webroot/js/vendor/jquery';
     $foundationVendorDir = $rootDir . '/vendor/zurb/foundation/js/foundation';
     $foundationWebrootDir = $rootDir . '/webroot/js/vendor/foundation';
     $modernizrVendorDir = $rootDir . '/vendor/components/modernizr';
     $modernizrWebrootDir = $rootDir . '/webroot/js/vendor/modernizr';
     if (is_dir($jqueryVendorDir)) {
         $jqueryFolder = new Folder($jqueryVendorDir);
         $jqueryFolder->copy($jqueryWebrootDir);
         $io->write('Copied `Jquery` files');
     }
     if (is_dir($foundationVendorDir)) {
         $foundationFolder = new Folder($foundationVendorDir);
         $foundationFolder->copy($foundationWebrootDir);
         $io->write('Copied `Zurb Foundation JS` files');
     }
     if (is_dir($modernizrVendorDir)) {
         $modernizrFolder = new Folder($modernizrVendorDir);
         $modernizrFolder->copy($modernizrWebrootDir);
         $io->write('Copied `Modernizr` files');
     }
 }
 public function sync($id = null)
 {
     $folder = new Folder();
     $folders_to_copy = ['f1' => ['dev' => '../src', 'prod' => '../../production/src'], 'f2' => ['dev' => '../plugins', 'prod' => '../../production/plugins'], 'f3' => ['dev' => '../webroot', 'prod' => '../../production/webroot'], 'f4' => ['dev' => '../config', 'prod' => '../../production/config']];
     $pass = 0;
     $fail = 0;
     foreach ($folders_to_copy as $ftc) {
         $p = new Folder($ftc['prod']);
         $d = new Folder($ftc['dev']);
         if ($folder->copy(['to' => $p->pwd(), 'from' => $d->pwd(), 'scheme' => Folder::MERGE])) {
             $pass++;
         } else {
             $fail++;
         }
     }
     if ($fail == 0) {
         $this->Flash->success(__('Production updated successfully.'));
     } else {
         $errors = '';
         foreach ($folder->errors() as $error) {
             $errors .= ' : ' . $error;
         }
         $this->Flash->error(__('Unable to update {0} folders on production. Errors' . $errors, $fail));
     }
     return $this->redirect($this->referer());
 }
Exemple #10
0
 /**
  * testCopyWithoutResursive
  *
  * Verify that only the files exist in the target directory.
  *
  * @return void
  */
 public function testCopyWithoutRecursive()
 {
     extract($this->_setupFilesystem());
     $Folder = new Folder($folderOne);
     $result = $Folder->copy(['to' => $folderThree, 'recursive' => false]);
     $this->assertTrue(file_exists($folderThree . DS . 'file1.php'));
     $this->assertFalse(is_dir($folderThree . DS . 'folderA'));
     $this->assertFalse(file_exists($folderThree . DS . 'folderA' . DS . 'fileA.php'));
 }
Exemple #11
0
 /**
  * testCopyWithOverwrite
  *
  * Verify that subdirectories existing in both destination and source directory
  * are overwritten/replaced recursively.
  *
  * @return void
  */
 public function testCopyWithOverwrite()
 {
     extract($this->_setupFilesystem());
     $Folder = new Folder($folderOne);
     $result = $Folder->copy(['to' => $folderThree, 'scheme' => Folder::OVERWRITE]);
     $this->assertTrue(file_exists($folderThree . DS . 'file1.php'));
     $this->assertTrue(file_exists($folderThree . DS . 'folderA' . DS . 'fileA.php'));
     $Folder = new Folder($folderTwo);
     $result = $Folder->copy(['to' => $folderThree, 'scheme' => Folder::OVERWRITE]);
     $this->assertTrue($result);
     $this->assertTrue(file_exists($folderThree . DS . 'folderA' . DS . 'fileA.php'));
     $Folder = new Folder($folderOne);
     unlink($fileOneA);
     $result = $Folder->copy(['to' => $folderThree, 'scheme' => Folder::OVERWRITE]);
     $this->assertTrue($result);
     $this->assertTrue(file_exists($folderThree . DS . 'file1.php'));
     $this->assertTrue(file_exists($folderThree . DS . 'file2.php'));
     $this->assertTrue(!file_exists($folderThree . DS . 'folderA' . DS . 'fileA.php'));
     $this->assertTrue(file_exists($folderThree . DS . 'folderB' . DS . 'fileB.php'));
 }