@@ -16,7 +16,7 @@ internal class Program
1616{
1717 private const string OpenApiVersionOption = "--openapiversion" ;
1818
19- public static int Main ( string [ ] args )
19+ public static async Task < int > Main ( string [ ] args )
2020 {
2121 // Helper to simplify command line parsing etc.
2222 var runner = new CommandRunner ( "dotnet swagger" , "Swashbuckle (Swagger) Command Line Tools" , Console . Out ) ;
@@ -45,7 +45,7 @@ public static int Main(string[] args)
4545 using var child = Process . Start ( "dotnet" , subProcessCommandLine ) ;
4646
4747 child . WaitForExit ( ) ;
48- return child . ExitCode ;
48+ return Task . FromResult ( child . ExitCode ) ;
4949 } ) ;
5050 } ) ;
5151
@@ -60,14 +60,16 @@ public static int Main(string[] args)
6060 c . Option ( OpenApiVersionOption , "" ) ;
6161 c . Option ( "--yaml" , "" , true ) ;
6262
63- c . OnRun ( ( namedArgs ) =>
63+ c . OnRun ( async ( namedArgs ) =>
6464 {
65- SetupAndRetrieveSwaggerProviderAndOptions ( namedArgs , out var swaggerProvider , out var swaggerOptions ) ;
65+ SetupAndRetrieveSwaggerProviderAndOptions ( namedArgs , out var asyncSwaggerProvider , out var swaggerProvider , out var swaggerOptions ) ;
6666 var swaggerDocumentSerializer = swaggerOptions ? . Value ? . CustomDocumentSerializer ;
67- var swagger = swaggerProvider . GetSwagger (
68- namedArgs [ "swaggerdoc" ] ,
69- namedArgs . TryGetValue ( "--host" , out var arg ) ? arg : null ,
70- namedArgs . TryGetValue ( "--basepath" , out var namedArg ) ? namedArg : null ) ;
67+
68+ var host = namedArgs . TryGetValue ( "--host" , out var arg ) ? arg : null ;
69+ var basePath = namedArgs . TryGetValue ( "--basepath" , out var namedArg ) ? namedArg : null ;
70+ var swagger = asyncSwaggerProvider != null
71+ ? await asyncSwaggerProvider . GetSwaggerAsync ( namedArgs [ "swaggerdoc" ] , host , basePath )
72+ : swaggerProvider . GetSwagger ( namedArgs [ "swaggerdoc" ] , host , basePath ) ;
7173
7274 // 4) Serialize to specified output location or stdout
7375 var outputPath = namedArgs . TryGetValue ( "--output" , out var arg1 )
@@ -139,7 +141,7 @@ public static int Main(string[] args)
139141 using var child = Process . Start ( "dotnet" , subProcessCommandLine ) ;
140142
141143 child . WaitForExit ( ) ;
142- return child . ExitCode ;
144+ return Task . FromResult ( child . ExitCode ) ;
143145 } ) ;
144146 } ) ;
145147
@@ -150,7 +152,7 @@ public static int Main(string[] args)
150152 c . Option ( "--output" , "" ) ;
151153 c . OnRun ( ( namedArgs ) =>
152154 {
153- SetupAndRetrieveSwaggerProviderAndOptions ( namedArgs , out var swaggerProvider , out var swaggerOptions ) ;
155+ SetupAndRetrieveSwaggerProviderAndOptions ( namedArgs , out _ , out var swaggerProvider , out var swaggerOptions ) ;
154156 IList < string > docNames = [ ] ;
155157
156158 string outputPath = namedArgs . TryGetValue ( "--output" , out var arg1 )
@@ -172,7 +174,7 @@ public static int Main(string[] args)
172174 if ( swaggerProvider is not ISwaggerDocumentMetadataProvider docMetaProvider )
173175 {
174176 writer . WriteLine ( $ "The registered { nameof ( ISwaggerProvider ) } instance does not implement { nameof ( ISwaggerDocumentMetadataProvider ) } ; unable to list the Swagger document names.") ;
175- return - 1 ;
177+ return Task . FromResult ( - 1 ) ;
176178 }
177179
178180 docNames = docMetaProvider . GetDocumentNames ( ) ;
@@ -182,14 +184,14 @@ public static int Main(string[] args)
182184 writer . WriteLine ( $ "\" { name } \" ") ;
183185 }
184186
185- return 0 ;
187+ return Task . FromResult ( 0 ) ;
186188 } ) ;
187189 } ) ;
188190
189- return runner . Run ( args ) ;
191+ return await runner . RunAsync ( args ) ;
190192 }
191193
192- private static void SetupAndRetrieveSwaggerProviderAndOptions ( IDictionary < string , string > namedArgs , out ISwaggerProvider swaggerProvider , out IOptions < SwaggerOptions > swaggerOptions )
194+ private static void SetupAndRetrieveSwaggerProviderAndOptions ( IDictionary < string , string > namedArgs , out IAsyncSwaggerProvider asyncSwaggerProvider , out ISwaggerProvider swaggerProvider , out IOptions < SwaggerOptions > swaggerOptions )
193195 {
194196 // 1) Configure host with provided startupassembly
195197 var startupAssembly = AssemblyLoadContext . Default . LoadFromAssemblyPath (
@@ -199,6 +201,7 @@ private static void SetupAndRetrieveSwaggerProviderAndOptions(IDictionary<string
199201 var serviceProvider = GetServiceProvider ( startupAssembly ) ;
200202
201203 // 3) Retrieve Swagger via configured provider
204+ asyncSwaggerProvider = serviceProvider . GetService < IAsyncSwaggerProvider > ( ) ;
202205 swaggerProvider = serviceProvider . GetRequiredService < ISwaggerProvider > ( ) ;
203206 swaggerOptions = serviceProvider . GetService < IOptions < SwaggerOptions > > ( ) ;
204207 }
0 commit comments