@@ -20,37 +20,28 @@ public static int Run(Action run)
2020
2121 Logger . Flush ( ) ;
2222 Logger . UnregisterAllListeners ( ) ;
23+ // Logger.PrintSummary() method is not called when Run without LogOptions.(DownloadCommand/ServeCommand/TemplateCommand)
2324
2425 return 0 ;
2526 }
2627
2728 public static int Run ( LogOptions options , Action run )
2829 {
29- var consoleLogListener = new ConsoleLogListener ( ) ;
30- Logger . RegisterListener ( consoleLogListener ) ;
31-
32- if ( ! string . IsNullOrWhiteSpace ( options . LogFilePath ) )
33- {
34- Logger . RegisterListener ( new ReportLogListener ( options . LogFilePath ) ) ;
35- }
30+ SetupLogger ( options ) ;
3631
37- if ( options . LogLevel . HasValue )
38- {
39- Logger . LogLevelThreshold = options . LogLevel . Value ;
40- }
41- else if ( options . Verbose )
42- {
43- Logger . LogLevelThreshold = LogLevel . Verbose ;
44- }
32+ run ( ) ;
4533
46- Logger . WarningsAsErrors = options . WarningsAsErrors ;
34+ CleanupLogger ( ) ;
35+ return Logger . HasError ? - 1 : 0 ;
36+ }
4737
48- run ( ) ;
38+ public static async Task < int > RunAsync ( LogOptions options , Func < Task > run )
39+ {
40+ SetupLogger ( options ) ;
4941
50- Logger . Flush ( ) ;
51- Logger . UnregisterAllListeners ( ) ;
52- Logger . PrintSummary ( ) ;
42+ await run ( ) ;
5343
44+ CleanupLogger ( ) ;
5445 return Logger . HasError ? - 1 : 0 ;
5546 }
5647
@@ -82,4 +73,33 @@ public static bool IsTcpPortAlreadyUsed(string? host, int? port)
8273 }
8374 }
8475 }
76+
77+ private static void SetupLogger ( LogOptions options )
78+ {
79+ var consoleLogListener = new ConsoleLogListener ( ) ;
80+ Logger . RegisterListener ( consoleLogListener ) ;
81+
82+ if ( ! string . IsNullOrWhiteSpace ( options . LogFilePath ) )
83+ {
84+ Logger . RegisterListener ( new ReportLogListener ( options . LogFilePath ) ) ;
85+ }
86+
87+ if ( options . LogLevel . HasValue )
88+ {
89+ Logger . LogLevelThreshold = options . LogLevel . Value ;
90+ }
91+ else if ( options . Verbose )
92+ {
93+ Logger . LogLevelThreshold = LogLevel . Verbose ;
94+ }
95+
96+ Logger . WarningsAsErrors = options . WarningsAsErrors ;
97+ }
98+
99+ private static void CleanupLogger ( )
100+ {
101+ Logger . Flush ( ) ;
102+ Logger . UnregisterAllListeners ( ) ;
103+ Logger . PrintSummary ( ) ;
104+ }
85105}
0 commit comments