diff --git a/src/Analyzer/ClassAnalyzer.php b/src/Analyzer/ClassAnalyzer.php
index 436830c..3bf337a 100644
--- a/src/Analyzer/ClassAnalyzer.php
+++ b/src/Analyzer/ClassAnalyzer.php
@@ -7,7 +7,6 @@
use MaxBeckers\PhpBuilderGenerator\Attribute\Builder;
use MaxBeckers\PhpBuilderGenerator\Generator\Context\ClassContext;
use ReflectionClass;
-use ReflectionProperty;
class ClassAnalyzer
{
diff --git a/src/Plugin/ComposerPlugin.php b/src/Plugin/ComposerPlugin.php
index 488a195..779abb2 100644
--- a/src/Plugin/ComposerPlugin.php
+++ b/src/Plugin/ComposerPlugin.php
@@ -5,6 +5,7 @@
namespace MaxBeckers\PhpBuilderGenerator\Plugin;
use Composer\Composer;
+use Composer\EventDispatcher\Event;
use Composer\EventDispatcher\EventSubscriberInterface;
use Composer\IO\IOInterface;
use Composer\Plugin\PluginInterface;
@@ -37,7 +38,7 @@ public static function getSubscribedEvents(): array
];
}
- public function generateBuilders(): void
+ public function generateBuilders(Event $event): void
{
$extra = $this->composer->getPackage()->getExtra();
$config = $extra['php-builder-generator'] ?? [];
@@ -46,6 +47,8 @@ public function generateBuilders(): void
$this->io->write('PHP Builder Generator: Auto-generation disabled');
return;
}
+
+ $this->forceAutoloading();
$this->io->write('Generating PHP builders...');
$extra = $this->composer->getPackage()->getExtra();
@@ -55,5 +58,38 @@ public function generateBuilders(): void
$generated = $service->generateBuilders($config);
$this->io->write("Generated {$generated} builder classes");
+
+ if ($generated > 0) {
+ $this->io->write('Regenerating autoloader...');
+ $this->regenerateAutoloader($event);
+ $this->io->write('Autoloader regenerated.');
+ }
+ }
+
+ private function regenerateAutoloader(Event $event): void
+ {
+ $config = $this->composer->getConfig();
+ $generator = $this->composer->getAutoloadGenerator();
+ $installationManager = $this->composer->getInstallationManager();
+ $localRepo = $this->composer->getRepositoryManager()->getLocalRepository();
+ $package = $this->composer->getPackage();
+ $optimize = $event->getFlags()['optimize'] ?? false;
+
+ $generator->setRunScripts(false);
+
+ $generator->dump(
+ $config,
+ $localRepo,
+ $package,
+ $installationManager,
+ 'composer',
+ $optimize
+ );
+ }
+
+ public function forceAutoloading(): void
+ {
+ $vendorDir = $this->composer->getConfig()->get('vendor-dir');
+ require_once $vendorDir . '/autoload.php';
}
}