This commit is contained in:
Fabien Potencier 2011-01-29 12:21:55 +01:00
parent 6ee13a6b8d
commit faf871990e

View File

@ -39,12 +39,13 @@ class InitBundleCommand extends Command
->setHelp(<<<EOT ->setHelp(<<<EOT
The <info>init:bundle</info> command generates a new bundle with a basic skeleton. The <info>init:bundle</info> command generates a new bundle with a basic skeleton.
<info>./app/console init:bundle "Application\HelloBundle" src [bundleName]</info> <info>./app/console init:bundle "Vendor\HelloBundle" src [bundleName]</info>
The bundle namespace must end with "Bundle" (e.g. <comment>Application\HelloBundle</comment>) The bundle namespace must end with "Bundle" (e.g. <comment>Vendor\HelloBundle</comment>)
and can be placed in any directory (e.g. <comment>src</comment>). and can be placed in any directory (e.g. <comment>src</comment>).
If you don't specify a bundle name (e.g. <comment>HelloBundle</comment> the bundle name will
be a concatenation of namespace (e.g. <comment>ApplicationHelloBundle</comment>). If you don't specify a bundle name (e.g. <comment>HelloBundle</comment>), the bundle name will
be the concatenation of the namespace segments (e.g. <comment>VendorHelloBundle</comment>).
EOT EOT
) )
->setName('init:bundle') ->setName('init:bundle')
@ -62,28 +63,27 @@ EOT
if (!preg_match('/Bundle$/', $namespace = $input->getArgument('namespace'))) { if (!preg_match('/Bundle$/', $namespace = $input->getArgument('namespace'))) {
throw new \InvalidArgumentException('The namespace must end with Bundle.'); throw new \InvalidArgumentException('The namespace must end with Bundle.');
} }
//validate namespace // validate namespace
if (preg_match('/[^A-Za-z0-9_\-\\\]/', $namespace)) { if (preg_match('/[^A-Za-z0-9_\\\-]/', $namespace)) {
throw new \InvalidArgumentException('The namespace contains invalid characters.'); throw new \InvalidArgumentException('The namespace contains invalid characters.');
} }
//user specified bundle name? // user specified bundle name?
if ('' == ($bundle = $input->getArgument('bundleName'))) { $bundle = $input->getArgument('bundleName');
if ('' === $bundle) {
$bundle = strtr($namespace, array('\\' => '')); $bundle = strtr($namespace, array('\\' => ''));
} else { } elseif (!preg_match('/Bundle$/', $bundle)) {
if (!preg_match('/Bundle$/', $bundle)) { throw new \InvalidArgumentException('The bundle name must end with Bundle.');
throw new \InvalidArgumentException('The bundleName must end with Bundle.');
}
} }
$dir = $input->getArgument('dir'); $dir = $input->getArgument('dir');
//add trailing / if necessary // add trailing / if necessary
$dir = ('/' == substr($dir, -1, 1)) ? $dir : $dir . '/'; $dir = '/' === substr($dir, -1, 1) ? $dir : $dir . '/';
$targetDir = $dir . strtr($namespace, '\\', '/'); $targetDir = $dir.strtr($namespace, '\\', '/');
$output->writeln(sprintf('Initializing bundle "<info>%s</info>" in "<info>%s</info>"', $bundle, $dir)); $output->writeln(sprintf('Initializing bundle "<info>%s</info>" in "<info>%s</info>"', $bundle, $dir));
if (file_exists($targetDir)) { if (file_exists($targetDir)) {