/** * Execute the console command. * * @return false|null */ public function handle() { if ($this->option('router') === 'laravel') { $generator = new LaravelGenerator(); } else { $generator = new DingoGenerator(); } $allowedRoutes = $this->option('routes'); $routePrefix = $this->option('routePrefix'); $middleware = $this->option('middleware'); $this->setUserToBeImpersonated($this->option('actAsUserId')); if ($routePrefix === null && !count($allowedRoutes) && $middleware === null) { $this->error('You must provide either a route prefix or a route or a middleware to generate the documentation.'); return false; } $generator->prepareMiddleware($this->option('useMiddlewares')); if ($this->option('router') === 'laravel') { $parsedRoutes = $this->processLaravelRoutes($generator, $allowedRoutes, $routePrefix, $middleware); } else { $parsedRoutes = $this->processDingoRoutes($generator, $allowedRoutes, $routePrefix, $middleware); } $parsedRoutes = collect($parsedRoutes)->groupBy('resource')->sort(function ($a, $b) { return strcmp($a->first()['resource'], $b->first()['resource']); }); $this->writeMarkdown($parsedRoutes); }