11// Copyright (c) Microsoft Corporation. All rights reserved.
22// Licensed under the MIT license.
33
4+ using System ;
45using System . CommandLine ;
56using System . IO ;
7+ using System . Threading ;
68using System . Threading . Tasks ;
79using Microsoft . Extensions . Logging ;
810
911namespace Microsoft . OpenApi . Hidi
1012{
1113 static class Program
1214 {
13- static async Task < int > Main ( string [ ] args )
15+ static async Task Main ( string [ ] args )
1416 {
1517 var rootCommand = new RootCommand ( ) {
1618 } ;
@@ -25,13 +27,16 @@ static async Task<int> Main(string[] args)
2527 var outputOption = new Option < FileInfo > ( "--output" , ( ) => new FileInfo ( "./output" ) , "The output directory path for the generated file." ) { Arity = ArgumentArity . ZeroOrOne } ;
2628 outputOption . AddAlias ( "-o" ) ;
2729
28- var versionOption = new Option < OpenApiSpecVersion ? > ( "--version" , "OpenAPI specification version" ) ;
30+ var cleanOutputOption = new Option < bool > ( "--clean-output" , "Overwrite an existing file" ) ;
31+ cleanOutputOption . AddAlias ( "-co" ) ;
32+
33+ var versionOption = new Option < string ? > ( "--version" , "OpenAPI specification version" ) ;
2934 versionOption . AddAlias ( "-v" ) ;
3035
3136 var formatOption = new Option < OpenApiFormat ? > ( "--format" , "File format" ) ;
3237 formatOption . AddAlias ( "-f" ) ;
3338
34- var logLevelOption = new Option < LogLevel > ( "--loglevel" , ( ) => LogLevel . Warning , "The log level to use when logging messages to the main output." ) ;
39+ var logLevelOption = new Option < LogLevel > ( "--loglevel" , ( ) => LogLevel . Information , "The log level to use when logging messages to the main output." ) ;
3540 logLevelOption . AddAlias ( "-ll" ) ;
3641
3742 var filterByOperationIdsOption = new Option < string > ( "--filter-by-operationids" , "Filters OpenApiDocument by OperationId(s) provided" ) ;
@@ -55,13 +60,14 @@ static async Task<int> Main(string[] args)
5560 logLevelOption
5661 } ;
5762
58- validateCommand . SetHandler < string , LogLevel > ( OpenApiService . ValidateOpenApiDocument , descriptionOption , logLevelOption ) ;
63+ validateCommand . SetHandler < string , LogLevel , CancellationToken > ( OpenApiService . ValidateOpenApiDocument , descriptionOption , logLevelOption ) ;
5964
6065 var transformCommand = new Command ( "transform" )
6166 {
6267 descriptionOption ,
6368 csdlOption ,
6469 outputOption ,
70+ cleanOutputOption ,
6571 versionOption ,
6672 formatOption ,
6773 logLevelOption ,
@@ -72,14 +78,17 @@ static async Task<int> Main(string[] args)
7278 inlineExternalOption
7379 } ;
7480
75- transformCommand . SetHandler < string , string , FileInfo , OpenApiSpecVersion ? , OpenApiFormat ? , LogLevel , bool , bool , string , string , string > (
76- OpenApiService . ProcessOpenApiDocument , descriptionOption , csdlOption , outputOption , versionOption , formatOption , logLevelOption , inlineLocalOption , inlineExternalOption , filterByOperationIdsOption , filterByTagsOption , filterByCollectionOption ) ;
81+ transformCommand . SetHandler < string , string , FileInfo , bool , string ? , OpenApiFormat ? , LogLevel , bool , bool , string , string , string , CancellationToken > (
82+ OpenApiService . TransformOpenApiDocument , descriptionOption , csdlOption , outputOption , cleanOutputOption , versionOption , formatOption , logLevelOption , inlineLocalOption , inlineExternalOption , filterByOperationIdsOption , filterByTagsOption , filterByCollectionOption ) ;
7783
7884 rootCommand . Add ( transformCommand ) ;
7985 rootCommand . Add ( validateCommand ) ;
8086
8187 // Parse the incoming args and invoke the handler
82- return await rootCommand . InvokeAsync ( args ) ;
88+ await rootCommand . InvokeAsync ( args ) ;
89+
90+ //// Wait for logger to write messages to the console before exiting
91+ await Task . Delay ( 10 ) ;
8392 }
8493 }
8594}
0 commit comments