@@ -551,13 +551,22 @@ async function releaseAction(ctx: Context): Promise<Result<string>> {
551551/** Results tracking */
552552class Results {
553553 private packageResults = new Map < string , boolean > ( ) ;
554+ private packageErrors = new Map <
555+ string ,
556+ Array < { action : string ; error : string } >
557+ > ( ) ;
554558
555559 logSuccess ( packageName : string ) : void {
556560 this . packageResults . set ( packageName , true ) ;
557561 }
558562
559- logFailure ( packageName : string ) : void {
563+ logFailure ( packageName : string , action : string , error : string ) : void {
560564 this . packageResults . set ( packageName , false ) ;
565+
566+ if ( ! this . packageErrors . has ( packageName ) ) {
567+ this . packageErrors . set ( packageName , [ ] ) ;
568+ }
569+ this . packageErrors . get ( packageName ) ?. push ( { action, error } ) ;
561570 }
562571
563572 hasFailures ( ) : boolean {
@@ -576,12 +585,34 @@ class Results {
576585 }
577586 }
578587
579- return [
588+ const lines = [
580589 separator ,
581590 `Successful: ${ success . sort ( ) . join ( " " ) } ` ,
582591 `Failed: ${ failed . sort ( ) . join ( " " ) } ` ,
583592 `Total: ${ this . packageResults . size } | Passed: ${ success . length } | Failed: ${ failed . length } ` ,
584- ] . join ( "\n" ) ;
593+ ] ;
594+
595+ if ( failed . length > 0 ) {
596+ lines . push ( "" , separator , "ERRORS:" , separator ) ;
597+
598+ for ( const packageName of failed . sort ( ) ) {
599+ const errors = this . packageErrors . get ( packageName ) || [ ] ;
600+ lines . push ( "" , `Package: ${ packageName } ` ) ;
601+ for ( const { action, error } of errors ) {
602+ lines . push ( ` Action: ${ action } ` ) ;
603+ lines . push (
604+ ` Error: ${ error
605+ . split ( "\n" )
606+ . map ( ( line , i ) => ( i === 0 ? line : ` ${ line } ` ) )
607+ . join ( "\n" ) } `,
608+ ) ;
609+ }
610+ }
611+
612+ lines . push ( "" , separator ) ;
613+ }
614+
615+ return lines . join ( "\n" ) ;
585616 }
586617}
587618
@@ -677,6 +708,7 @@ class PackageExecutor {
677708 const actionFn = ACTION_MAP [ actionName ] ;
678709 if ( ! actionFn ) {
679710 log ( `Unknown action: ${ actionName } ` ) ;
711+ results . logFailure ( packageName , actionName , "Unknown action" ) ;
680712 packageSuccess = false ;
681713 break ;
682714 }
@@ -687,7 +719,8 @@ class PackageExecutor {
687719 if ( result . skipped ) {
688720 log ( `Skipping ${ packageName } : ${ result . error } ` ) ;
689721 } else {
690- log ( `Failed ${ actionName } for ${ packageName } : ${ result . error } ` ) ;
722+ log ( `Failed ${ actionName } for ${ packageName } ` ) ;
723+ results . logFailure ( packageName , actionName , result . error ) ;
691724 packageSuccess = false ;
692725 }
693726 break ;
@@ -696,8 +729,6 @@ class PackageExecutor {
696729
697730 if ( packageSuccess ) {
698731 results . logSuccess ( packageName ) ;
699- } else {
700- results . logFailure ( packageName ) ;
701732 }
702733 } ;
703734
0 commit comments