@@ -24,6 +24,7 @@ class GenerateDocumentation extends Command
24
24
{--output=public/docs : The output path for the generated documentation}
25
25
{--routePrefix= : The route prefix to use for generation}
26
26
{--routes=* : The route names to use for generation}
27
+ {--middleware= : The middleware to use for generation}
27
28
{--noResponseCalls : Disable API response calls}
28
29
{--noPostmanCollection : Disable Postman collection creation}
29
30
{--actAsUserId= : The user ID to use for API response calls}
@@ -64,19 +65,20 @@ public function handle()
64
65
65
66
$ allowedRoutes = $ this ->option ('routes ' );
66
67
$ routePrefix = $ this ->option ('routePrefix ' );
68
+ $ middleware = $ this ->option ('middleware ' );
67
69
68
70
$ this ->setUserToBeImpersonated ($ this ->option ('actAsUserId ' ));
69
71
70
- if ($ routePrefix === null && ! count ($ allowedRoutes )) {
71
- $ this ->error ('You must provide either a route prefix or a route to generate the documentation. ' );
72
+ if ($ routePrefix === null && ! count ($ allowedRoutes ) && $ middleware === null ) {
73
+ $ this ->error ('You must provide either a route prefix or a route or a middleware to generate the documentation. ' );
72
74
73
75
return false ;
74
76
}
75
77
76
78
if ($ this ->option ('router ' ) === 'laravel ' ) {
77
- $ parsedRoutes = $ this ->processLaravelRoutes ($ generator , $ allowedRoutes , $ routePrefix );
79
+ $ parsedRoutes = $ this ->processLaravelRoutes ($ generator , $ allowedRoutes , $ routePrefix, $ middleware );
78
80
} else {
79
- $ parsedRoutes = $ this ->processDingoRoutes ($ generator , $ allowedRoutes , $ routePrefix );
81
+ $ parsedRoutes = $ this ->processDingoRoutes ($ generator , $ allowedRoutes , $ routePrefix, $ middleware );
80
82
}
81
83
$ parsedRoutes = collect ($ parsedRoutes )->groupBy ('resource ' )->sortBy ('resource ' );
82
84
@@ -242,14 +244,14 @@ private function getRoutes()
242
244
*
243
245
* @return array
244
246
*/
245
- private function processLaravelRoutes (AbstractGenerator $ generator , $ allowedRoutes , $ routePrefix )
247
+ private function processLaravelRoutes (AbstractGenerator $ generator , $ allowedRoutes , $ routePrefix, $ middleware )
246
248
{
247
249
$ withResponse = $ this ->option ('noResponseCalls ' ) === false ;
248
250
$ routes = $ this ->getRoutes ();
249
251
$ bindings = $ this ->getBindings ();
250
252
$ parsedRoutes = [];
251
253
foreach ($ routes as $ route ) {
252
- if (in_array ($ route ->getName (), $ allowedRoutes ) || str_is ($ routePrefix , $ route ->getUri ())) {
254
+ if (in_array ($ route ->getName (), $ allowedRoutes ) || str_is ($ routePrefix , $ route ->getUri ()) || in_array ( $ middleware , $ route -> middleware ()) ) {
253
255
if ($ this ->isValidRoute ($ route ) && $ this ->isRouteVisibleForDocumentation ($ route ->getAction ()['uses ' ])) {
254
256
$ parsedRoutes [] = $ generator ->processRoute ($ route , $ bindings , $ withResponse );
255
257
$ this ->info ('Processed route: [ ' .implode (', ' , $ route ->getMethods ()).'] ' .$ route ->getUri ());
@@ -269,14 +271,14 @@ private function processLaravelRoutes(AbstractGenerator $generator, $allowedRout
269
271
*
270
272
* @return array
271
273
*/
272
- private function processDingoRoutes (AbstractGenerator $ generator , $ allowedRoutes , $ routePrefix )
274
+ private function processDingoRoutes (AbstractGenerator $ generator , $ allowedRoutes , $ routePrefix, $ middleware )
273
275
{
274
276
$ withResponse = $ this ->option ('noResponseCalls ' ) === false ;
275
277
$ routes = $ this ->getRoutes ();
276
278
$ bindings = $ this ->getBindings ();
277
279
$ parsedRoutes = [];
278
280
foreach ($ routes as $ route ) {
279
- if (empty ($ allowedRoutes ) || in_array ($ route ->getName (), $ allowedRoutes ) || str_is ($ routePrefix , $ route ->uri ())) {
281
+ if (empty ($ allowedRoutes ) || in_array ($ route ->getName (), $ allowedRoutes ) || str_is ($ routePrefix , $ route ->uri ()) || in_array ( $ middleware , $ route -> middleware ()) ) {
280
282
$ parsedRoutes [] = $ generator ->processRoute ($ route , $ bindings , $ withResponse );
281
283
$ this ->info ('Processed route: [ ' .implode (', ' , $ route ->getMethods ()).'] ' .$ route ->uri ());
282
284
}
0 commit comments