@@ -102,7 +102,7 @@ CancellationToken cancellationToken
102
102
stream . Position = 0 ;
103
103
}
104
104
105
- document = await ConvertCsdlToOpenApi ( stream , settingsFile ) ;
105
+ document = await ConvertCsdlToOpenApi ( stream , cancellationToken , settingsFile ) ;
106
106
stopwatch . Stop ( ) ;
107
107
logger . LogTrace ( "{timestamp}ms: Generated OpenAPI with {paths} paths." , stopwatch . ElapsedMilliseconds , document . Paths . Count ) ;
108
108
}
@@ -216,6 +216,10 @@ CancellationToken cancellationToken
216
216
textWriter . Flush ( ) ;
217
217
}
218
218
}
219
+ catch ( TaskCanceledException )
220
+ {
221
+ Console . Error . WriteLine ( "CTRL+C pressed, aborting the operation." ) ;
222
+ }
219
223
catch ( Exception ex )
220
224
{
221
225
throw new InvalidOperationException ( $ "Could not transform the document, reason: { ex . Message } ", ex ) ;
@@ -324,12 +328,12 @@ internal static IConfiguration GetConfiguration(string settingsFile)
324
328
/// </summary>
325
329
/// <param name="csdl">The CSDL stream.</param>
326
330
/// <returns>An OpenAPI document.</returns>
327
- public static async Task < OpenApiDocument > ConvertCsdlToOpenApi ( Stream csdl , string settingsFile = null )
331
+ public static async Task < OpenApiDocument > ConvertCsdlToOpenApi ( Stream csdl , CancellationToken token , string settingsFile = null )
328
332
{
329
333
using var reader = new StreamReader ( csdl ) ;
330
- var csdlText = await reader . ReadToEndAsync ( ) ;
334
+ var csdlText = await reader . ReadToEndAsync ( token ) ;
331
335
var edmModel = CsdlReader . Parse ( XElement . Parse ( csdlText ) . CreateReader ( ) ) ;
332
-
336
+
333
337
var config = GetConfiguration ( settingsFile ) ;
334
338
var settings = new OpenApiConvertSettings ( )
335
339
{
@@ -353,9 +357,8 @@ public static async Task<OpenApiDocument> ConvertCsdlToOpenApi(Stream csdl, stri
353
357
EnableTypeDisambiguationForDefaultValueOfOdataTypeProperty = true
354
358
} ;
355
359
config . GetSection ( "OpenApiConvertSettings" ) . Bind ( settings ) ;
356
-
357
- OpenApiDocument document = edmModel . ConvertToOpenApi ( settings ) ;
358
360
361
+ OpenApiDocument document = edmModel . ConvertToOpenApi ( settings ) ;
359
362
document = FixReferences ( document ) ;
360
363
361
364
return document ;
0 commit comments