12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php');
- class sfPluginPublishAssetsTask extends sfPluginBaseTask
- {
-
- protected function configure()
- {
- $this->addOptions(array(
- new sfCommandOption('core-only', '', sfCommandOption::PARAMETER_NONE, 'If set only core plugins will publish their assets'),
- new sfCommandOption('symfony-lib-dir', '', sfCommandOption::PARAMETER_REQUIRED, 'The symfony lib dir'),
- ));
- $this->aliases = array();
- $this->namespace = 'plugin';
- $this->name = 'publish-assets';
- $this->briefDescription = 'Publishes web assets for all plugins';
- $this->detailedDescription = <<<EOF
- The [plugin:publish-assets|INFO] task will publish web assets from all plugins.
- [./symfony plugin:publish-assets|INFO]
- In fact this will send the [plugin.post_install|INFO] event to each plugin.
- EOF;
- }
-
- protected function execute($arguments = array(), $options = array())
- {
- $plugins = $this->configuration->getPlugins();
- foreach ($this->configuration->getAllPluginPaths() as $pluginName => $pluginPath)
- {
- if (!in_array($pluginName, $plugins) || ($options['core-only'] && dirname($pluginPath) != $this->configuration->getSymfonyLibDir().'/plugins'))
- {
- continue;
- }
- $this->logSection('plugin', 'Configuring plugin - '.$pluginName);
- $this->installPluginAssets($pluginName, $pluginPath);
- }
- }
-
- protected function installPluginAssets($plugin, $dir)
- {
- $webDir = $dir.DIRECTORY_SEPARATOR.'web';
- if (is_dir($webDir))
- {
- $filesystem = new sfFilesystem();
- $filesystem->relativeSymlink($webDir, sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.$plugin, true);
- }
- }
- }
|