From 6d70c49cbd170594c01b1e8801aabb765b45d7b2 Mon Sep 17 00:00:00 2001 From: Darius Matulionis Date: Wed, 21 Sep 2022 12:20:02 +0300 Subject: [PATCH] Allow to change OpenApi spec version --- Dockerfile | 4 +++- config/l5-swagger.php | 6 ++++++ src/Generator.php | 5 +++++ tests/GeneratorTest.php | 7 +++++-- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 369ff67..b8267ea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,7 +62,9 @@ RUN /usr/local/bin/php -dxdebug.mode=off /usr/local/bin/composer config reposito RUN /usr/local/bin/php -dxdebug.mode=off /usr/local/bin/composer require 'darkaonline/l5-swagger:dev-master' -RUN ln -s /app/tests/storage/annotations/ app/annotations +RUN cp -r /app/tests/storage/annotations /app/l5-swagger-app/app/Annotations + +RUN for f in $(find app/Annotations/* -name '*.php'); do sed -i 's/namespace Tests\\storage\\annotations/namespace App\\Annotations/' $f; done RUN chown -R $user:$user . # diff --git a/config/l5-swagger.php b/config/l5-swagger.php index b540d6c..160c782 100644 --- a/config/l5-swagger.php +++ b/config/l5-swagger.php @@ -140,6 +140,12 @@ * @see \OpenApi\scan */ 'exclude' => [], + + /* + * Allows to generate specs either for OpenAPI 3.0.0 or OpenAPI 3.1.0. + * By default the spec will be in version 3.0.0 + */ + 'open_api_spec_version' => env('L5_SWAGGER_OPEN_API_SPEC_VERSION', \OpenApi\Annotations\OpenApi::DEFAULT_VERSION), ], /* diff --git a/src/Generator.php b/src/Generator.php index 58d10f2..b0cecc4 100644 --- a/src/Generator.php +++ b/src/Generator.php @@ -200,6 +200,11 @@ protected function createOpenApiGenerator(): OpenApiGenerator { $generator = new OpenApiGenerator(); + // OpenApi spec version. + $generator->setVersion( + $this->scanOptions['open_api_spec_version'] ?? OpenApi::DEFAULT_VERSION + ); + // Processors. $this->setProcessors($generator); diff --git a/tests/GeneratorTest.php b/tests/GeneratorTest.php index a711df6..728c75b 100644 --- a/tests/GeneratorTest.php +++ b/tests/GeneratorTest.php @@ -171,6 +171,7 @@ public function canGenerateWithScanOptions(): void $cfg['scanOptions']['pattern'] = 'L5SwaggerAnnotationsExample*.*'; $cfg['scanOptions']['analyser'] = new TokenAnalyser; + $cfg['scanOptions']['open_api_spec_version'] = '3.1.0'; $cfg['scanOptions']['processors'] = [ new CleanUnmerged, ]; @@ -189,8 +190,10 @@ public function canGenerateWithScanOptions(): void $this->assertTrue(file_exists($this->jsonDocsFile())); - $this->get(route('l5-swagger.default.docs')) - ->assertSee('L5 Swagger') + $response = $this->get(route('l5-swagger.default.docs')); + + $response->assertSee('L5 Swagger') + ->assertSee('3.1.0') ->assertSee('my-default-host.com') ->assertSee('getProjectsList') ->assertSee('getProductsList')