Source of file BundleGenerator.php
Size: 3,554 Bytes - Last Modified: 2013-07-04T14:20:59+02:00
/home/theseer/Downloads/Symfony/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle/Generator/BundleGenerator.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Sensio\Bundle\GeneratorBundle\Generator; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\DependencyInjection\Container; /** * Generates a bundle. * * @author Fabien Potencier <fabien@symfony.com> */ class BundleGenerator extends Generator { private $filesystem; public function __construct(Filesystem $filesystem) { $this->filesystem = $filesystem; } public function generate($namespace, $bundle, $dir, $format, $structure) { $dir .= '/'.strtr($namespace, '\\', '/'); if (file_exists($dir)) { if (!is_dir($dir)) { throw new \RuntimeException(sprintf('Unable to generate the bundle as the target directory "%s" exists but is a file.', realpath($dir))); } $files = scandir($dir); if ($files != array('.', '..')) { throw new \RuntimeException(sprintf('Unable to generate the bundle as the target directory "%s" is not empty.', realpath($dir))); } if (!is_writable($dir)) { throw new \RuntimeException(sprintf('Unable to generate the bundle as the target directory "%s" is not writable.', realpath($dir))); } } $basename = substr($bundle, 0, -6); $parameters = array( 'namespace' => $namespace, 'bundle' => $bundle, 'format' => $format, 'bundle_basename' => $basename, 'extension_alias' => Container::underscore($basename), ); $this->renderFile('bundle/Bundle.php.twig', $dir.'/'.$bundle.'.php', $parameters); $this->renderFile('bundle/Extension.php.twig', $dir.'/DependencyInjection/'.$basename.'Extension.php', $parameters); $this->renderFile('bundle/Configuration.php.twig', $dir.'/DependencyInjection/Configuration.php', $parameters); $this->renderFile('bundle/DefaultController.php.twig', $dir.'/Controller/DefaultController.php', $parameters); $this->renderFile('bundle/DefaultControllerTest.php.twig', $dir.'/Tests/Controller/DefaultControllerTest.php', $parameters); $this->renderFile('bundle/index.html.twig.twig', $dir.'/Resources/views/Default/index.html.twig', $parameters); if ('xml' === $format || 'annotation' === $format) { $this->renderFile('bundle/services.xml.twig', $dir.'/Resources/config/services.xml', $parameters); } else { $this->renderFile('bundle/services.'.$format.'.twig', $dir.'/Resources/config/services.'.$format, $parameters); } if ('annotation' != $format) { $this->renderFile('bundle/routing.'.$format.'.twig', $dir.'/Resources/config/routing.'.$format, $parameters); } if ($structure) { $this->renderFile('bundle/messages.fr.xlf', $dir.'/Resources/translations/messages.fr.xlf', $parameters); $this->filesystem->mkdir($dir.'/Resources/doc'); $this->filesystem->touch($dir.'/Resources/doc/index.rst'); $this->filesystem->mkdir($dir.'/Resources/translations'); $this->filesystem->mkdir($dir.'/Resources/public/css'); $this->filesystem->mkdir($dir.'/Resources/public/images'); $this->filesystem->mkdir($dir.'/Resources/public/js'); } } } |