Skip to content

Commit

Permalink
Code changes to sync with upstream updates
Browse files Browse the repository at this point in the history
  • Loading branch information
weaverryan committed Feb 27, 2018
1 parent 4afbc0e commit b8856c0
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 55 deletions.
59 changes: 14 additions & 45 deletions src/Doctrine/EntityRegenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,20 +146,11 @@ public function regenerateEntities(string $classOrNamespace)

private function generateClass(ClassMetadata $metadata): string
{
$path = $this->getPathForFutureClass($metadata->name);

if (null === $path) {
throw new RuntimeCommandException(sprintf('Cannot determine where to generate the class "%s". This could be a bug in the library - please open an issue with your setup details.', $metadata->name));
}

$this->generator->generate([
'class_namespace' => $metadata->namespace,
'class_name' => Str::getShortClassName($metadata->name),
], [
__DIR__.'/../Resources/skeleton/Class.tpl.php' => $path,
]);

return $path;
return $this->generator->generateClass(
$metadata->name,
'Class.tpl.php',
[]
);
}

private function createClassManipulator(string $classPath): ClassSourceManipulator
Expand Down Expand Up @@ -193,37 +184,15 @@ private function generateRepository(ClassMetadata $metadata)

// duplication in MakeEntity
$entityClassName = Str::getShortClassName($metadata->name);
$entityAlias = strtolower($entityClassName[0]);
$repositoryClassName = Str::getShortClassName($metadata->customRepositoryClassName);
$repositoryNamespace = Str::getNamespace($metadata->customRepositoryClassName);
$path = $this->getPathForFutureClass($metadata->customRepositoryClassName);

$this->generator->generate([
'repository_namespace' => $repositoryNamespace,
'entity_class_name' => $entityClassName,
'repository_class_name' => $repositoryClassName,
'entity_alias' => $entityAlias,
], [
__DIR__.'/../Resources/skeleton/doctrine/Repository.tpl.php' => $path,
]);
}

private function getPathForFutureClass(string $className): ?string
{
$autoloadPath = $this->projectDirectory.'/vendor/autoload.php';
if (!file_exists($autoloadPath)) {
throw new \Exception(sprintf('Could not find the autoload file: "%s"', $autoloadPath));
}

/** @var \Composer\Autoload\ClassLoader $loader */
$loader = require $autoloadPath;
$path = null;
foreach ($loader->getPrefixesPsr4() as $prefix => $paths) {
if (0 === strpos($className, $prefix)) {
return $paths[0].'/'.str_replace('\\', '/', str_replace($prefix, '', $className)).'.php';
}
}

return null;
$this->generator->generateClass(
$metadata->customRepositoryClassName,
'doctrine/Repository.tpl.php',
[
'entity_full_class_name' => $metadata->name,
'entity_class_name' => $entityClassName,
'entity_alias' => strtolower($entityClassName[0]),
]
);
}
}
11 changes: 4 additions & 7 deletions src/Maker/MakeEntity.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,12 @@
final class MakeEntity extends AbstractMaker
{
private $fileManager;
private $generator;
private $registry;
private $projectDirectory;

public function __construct(FileManager $fileManager, Generator $generator, string $projectDirectory, ?ManagerRegistry $registry)
public function __construct(FileManager $fileManager, string $projectDirectory, ?ManagerRegistry $registry)
{
$this->fileManager = $fileManager;
$this->generator = $generator;
$this->projectDirectory = $projectDirectory;
$this->registry = $registry;
}
Expand Down Expand Up @@ -110,7 +108,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen

// the regenerate option has entirely custom behavior
if ($input->getOption('regenerate')) {
$this->regenerateEntities($input->getArgument('name'), $overwrite, $io);
$this->regenerateEntities($input->getArgument('name'), $overwrite, $generator);
}

$entityClassDetails = $generator->createClassNameDetails(
Expand Down Expand Up @@ -770,10 +768,9 @@ private function isClassInVendor(string $class): bool
return $this->fileManager->isPathInVendor($path);
}

private function regenerateEntities(string $classOrNamespace, bool $overwrite, ConsoleStyle $io)
private function regenerateEntities(string $classOrNamespace, bool $overwrite, Generator $generator)
{
$this->generator->setIO($io);
$regenerator = new EntityRegenerator($this->getRegistry(), $this->fileManager, $this->generator, $this->projectDirectory, $overwrite);
$regenerator = new EntityRegenerator($this->getRegistry(), $this->fileManager, $generator, $this->projectDirectory, $overwrite);
$regenerator->regenerateEntities($classOrNamespace);
}
}
1 change: 0 additions & 1 deletion src/Resources/config/makers.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

<service id="maker.maker.make_entity" class="Symfony\Bundle\MakerBundle\Maker\MakeEntity">
<argument type="service" id="maker.file_manager" />
<argument type="service" id="maker.generator" />
<argument>%kernel.project_dir%</argument>
<argument type="service" id="doctrine" on-invalid="null" />
<tag name="maker.command" />
Expand Down
2 changes: 1 addition & 1 deletion src/Resources/skeleton/Class.tpl.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?= "<?php\n" ?>

namespace <?= $class_namespace; ?>;
namespace <?= $namespace; ?>;

class <?= $class_name."\n" ?>
{
Expand Down
2 changes: 1 addition & 1 deletion tests/Doctrine/EntityRegeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ private function doTestRegeneration(string $sourceDir, Kernel $kernel, string $n
$regenerator = new EntityRegenerator(
$container->get('doctrine'),
$fileManager,
new Generator($fileManager),
new Generator($fileManager, 'App\\'),
// project root: just used to fetch the autoloader
// and in this case, we want to use *our* autoloader
__DIR__.'/../../',
Expand Down

0 comments on commit b8856c0

Please sign in to comment.