diff --git a/src/Console/Commands/ExportDocumentation.php b/src/Console/Commands/ExportDocumentation.php index e15e45a83..13e4924e6 100644 --- a/src/Console/Commands/ExportDocumentation.php +++ b/src/Console/Commands/ExportDocumentation.php @@ -12,6 +12,7 @@ class ExportDocumentation extends Command protected $signature = 'scramble:export {--path= : The path to save the exported JSON file} {--api=default : The API to export a documentation for} + {--all : Ignore exclude attributes, export all routes} '; protected $description = 'Export the OpenAPI document to a JSON file.'; @@ -20,6 +21,10 @@ public function handle(Generator $generator): void { $config = Scramble::getGeneratorConfig($api = $this->option('api')); + if ($this->option('all')) { + $config->set('ignore_exclude_attributes', true); + } + $specification = json_encode($generator($config), JSON_PRETTY_PRINT); /** @var string $filename */ diff --git a/src/Generator.php b/src/Generator.php index aab5f9d33..17dde3bbe 100644 --- a/src/Generator.php +++ b/src/Generator.php @@ -185,11 +185,15 @@ private function getRoutes(GeneratorConfig $config): Collection }) ->filter($config->routes()) ->filter(fn (Route $r) => $r->getAction('controller')) - ->filter(function (Route $route) { + ->filter(function (Route $route) use ($config) { if (! is_string($route->getAction('uses'))) { return true; } + if ($config->get('ignore_exclude_attributes')) { + return true; + } + try { $classReflection = new \ReflectionClass(explode('@', $route->getAction('uses'))[0]); diff --git a/src/GeneratorConfig.php b/src/GeneratorConfig.php index c8ef46a92..50d30996a 100644 --- a/src/GeneratorConfig.php +++ b/src/GeneratorConfig.php @@ -183,4 +183,9 @@ public function get(string $key, mixed $default = null) { return Arr::get($this->config, $key, $default); } + + public function set(string $key, mixed $value): void + { + $this->config[$key] = $value; + } } diff --git a/src/Scramble.php b/src/Scramble.php index 3f0a75e68..d64d59b34 100755 --- a/src/Scramble.php +++ b/src/Scramble.php @@ -14,6 +14,7 @@ use Dedoc\Scramble\Support\RouteInfo; use Illuminate\Routing\Route; use Illuminate\Support\Arr; +use Illuminate\Support\Facades\Context; use Illuminate\Support\Facades\Route as RouteFacade; class Scramble @@ -149,6 +150,10 @@ public static function registerUiRoute(string $path, string $api = 'default'): R { $config = static::getGeneratorConfig($api); + if (Context::hasHidden('scramble-all-access')) { + $config->set('ignore_exclude_attributes', true); + } + return RouteFacade::get($path, function (Generator $generator) use ($api) { $config = static::getGeneratorConfig($api); @@ -164,6 +169,10 @@ public static function registerJsonSpecificationRoute(string $path, string $api { $config = static::getGeneratorConfig($api); + if (Context::hasHidden('scramble-all-access')) { + $config->set('ignore_exclude_attributes', true); + } + return RouteFacade::get($path, function (Generator $generator) use ($api) { $config = static::getGeneratorConfig($api);