@@ -147,11 +147,64 @@ export function setupActionsVars(tempDir: string, toolsDir: string) {
147147 process . env [ "GITHUB_WORKSPACE" ] = tempDir ;
148148}
149149
150+ type LogLevel = "debug" | "info" | "warning" | "error" ;
151+
150152export interface LoggedMessage {
151- type : "debug" | "info" | "warning" | "error" ;
153+ type : LogLevel ;
152154 message : string | Error ;
153155}
154156
157+ export class RecordingLogger implements Logger {
158+ messages : LoggedMessage [ ] = [ ] ;
159+ groups : string [ ] = [ ] ;
160+ unfinishedGroups : Set < string > = new Set ( ) ;
161+ private currentGroup : string | undefined = undefined ;
162+
163+ constructor ( private readonly logToConsole : boolean = true ) { }
164+
165+ private addMessage ( level : LogLevel , message : string | Error ) : void {
166+ this . messages . push ( { type : level , message } ) ;
167+
168+ if ( this . logToConsole ) {
169+ // eslint-disable-next-line no-console
170+ console . debug ( message ) ;
171+ }
172+ }
173+
174+ isDebug ( ) {
175+ return true ;
176+ }
177+
178+ debug ( message : string ) {
179+ this . addMessage ( "debug" , message ) ;
180+ }
181+
182+ info ( message : string ) {
183+ this . addMessage ( "info" , message ) ;
184+ }
185+
186+ warning ( message : string | Error ) {
187+ this . addMessage ( "warning" , message ) ;
188+ }
189+
190+ error ( message : string | Error ) {
191+ this . addMessage ( "error" , message ) ;
192+ }
193+
194+ startGroup ( name : string ) {
195+ this . groups . push ( name ) ;
196+ this . currentGroup = name ;
197+ this . unfinishedGroups . add ( name ) ;
198+ }
199+
200+ endGroup ( ) {
201+ if ( this . currentGroup !== undefined ) {
202+ this . unfinishedGroups . delete ( this . currentGroup ) ;
203+ }
204+ this . currentGroup = undefined ;
205+ }
206+ }
207+
155208export function getRecordingLogger (
156209 messages : LoggedMessage [ ] ,
157210 { logToConsole } : { logToConsole ?: boolean } = { logToConsole : true } ,
0 commit comments