diff --git a/Specs/SpecGenerator.php b/Specs/SpecGenerator.php index e7dc959..ca9e1d9 100644 --- a/Specs/SpecGenerator.php +++ b/Specs/SpecGenerator.php @@ -94,6 +94,7 @@ public function generateSpec(array $pluginNames, string $format = 'json', string } $pluginAnnotationsSource = $this->specPathResolver->getAnnotationFilePath($pluginName); + $this->loadAnnotationSourceIfNeeded($pluginAnnotationsSource); try { $openapi = (new Generator(StaticContainer::get(NullLogger::class)))->generate([ $pluginAnnotationsSource, @@ -108,6 +109,9 @@ public function generateSpec(array $pluginNames, string $format = 'json', string } $generator = new Generator(StaticContainer::get(LoggerInterface::class)); + foreach ($pluginDirs as $pluginDir) { + $this->loadAnnotationSourceIfNeeded($pluginDir); + } $openapi = $generator->setVersion(OpenApi::VERSION_3_1_0)->generate(array_merge([ $currentPluginDir . '/Annotations/GlobalApiComponents.php', ], $pluginDirs)); @@ -137,4 +141,13 @@ public function generateSpec(array $pluginNames, string $format = 'json', string return $specContents; } + + private function loadAnnotationSourceIfNeeded(string $annotationSource): void + { + if (!is_file($annotationSource) || pathinfo($annotationSource, PATHINFO_EXTENSION) !== 'php') { + return; + } + + require_once $annotationSource; + } }