@@ -99,60 +99,64 @@ async function main() {
9999 process . exit ( 1 ) ;
100100 }
101101
102- console . log ( ) ;
103- const modeMessages = {
104- diff : "Showing differences" ,
105- changeset : "Creating changesets" ,
106- execute : "Deploying stacks" ,
107- } ;
108- logger . info (
109- modeMessages [ args . mode as keyof typeof modeMessages ] || "Processing stacks" ,
110- ) ;
111-
112102 const results = await deployToAllRegions ( regions , args , controller . signal ) ;
113103
114104 displayResults ( args , results ) ;
115105}
116106
117107function displayHeader ( args : ParsedArgs , regions : string [ ] ) {
118- console . log ( `
119- Multi-Region CDK Deployment
120- ${ Object . entries ( {
121- Profile : args . profile ,
122- Stack : args . stackPattern ,
123- Regions : regions . join ( " " ) ,
124- Mode : args . mode ,
125- Deployment : args . sequential ? "sequential" : "parallel" ,
126- Dependencies : args . includeDeps ? "included" : "excluded" ,
127- Timeout : process . env . CDK_TIMEOUT || "not set" ,
128- } )
129- . map ( ( [ k , v ] ) => `${ logger . dim ( k + ":" ) } ${ v } ` )
130- . join ( "\n" ) } `) ;
108+ logger . header ( "CDKO: Multi-Region Deployment" ) ;
109+ console . log ( ) ;
110+
111+ logger . subheader ( "Configuration:" ) ;
112+ const config = [
113+ ` Profile: ${ args . profile } ` ,
114+ ` Stack: ${ args . stackPattern } ` ,
115+ ` Regions: ${ regions . join ( ", " ) } ` ,
116+ ` Mode: ${ args . mode } ` ,
117+ ` Deployment: ${ args . sequential ? "sequential" : "parallel" } ` ,
118+ ` Dependencies: ${ args . includeDeps ? "included" : "excluded" } ` ,
119+ ` Timeout: ${ process . env . CDK_TIMEOUT || "not set" } ` ,
120+ ] ;
121+ console . log ( config . join ( "\n" ) ) ;
131122}
132123
133124function displayResults ( args : ParsedArgs , results : DeploymentResult [ ] ) {
134- const failedRegions = results . filter ( ( r ) => ! r . success ) ;
125+ const successful = results . filter ( ( r ) => r . success ) ;
126+ const failed = results . filter ( ( r ) => ! r . success ) ;
135127
136- if ( failedRegions . length > 0 ) {
137- console . log ( ) ;
138- logger . error ( `${ failedRegions . length } region(s) failed` ) ;
139- process . exit ( 1 ) ;
128+ console . log ( ) ;
129+ logger . phase ( "Summary" , "" ) ;
130+
131+ const status = failed . length > 0 ? "FAILURE" : "SUCCESS" ;
132+
133+ console . log (
134+ ` Status: ${ failed . length > 0 ? logger . dim ( "❌" ) : logger . dim ( "✅" ) } ${ status } ` ,
135+ ) ;
136+ console . log ( ` Stacks processed: ${ results . length } ` ) ;
137+ console . log ( ` Successful: ${ successful . length } ` ) ;
138+
139+ if ( args . mode === "diff" ) {
140+ console . log ( ` With changes: ${ successful . length } ` ) ;
140141 }
141142
142- console . log ( ) ;
143+ if ( failed . length > 0 ) {
144+ console . log ( ` Failed: ${ failed . length } ` ) ;
145+ }
143146
144- if ( args . dryRun ) {
145- logger . success ( "Dry run completed - no actual changes made" ) ;
146- } else if ( args . mode === "changeset" ) {
147- logger . success ( "Changesets created for review in CloudFormation console" ) ;
148- logger . info ( "Execute changesets manually after review" ) ;
149- } else if ( args . mode === "execute" ) {
150- const totalDuration = results
147+ if ( successful . length > 0 && successful . some ( ( r ) => r . duration ) ) {
148+ const totalDuration = successful
151149 . filter ( ( r ) => r . duration )
152150 . reduce ( ( sum , r ) => sum + parseFloat ( r . duration ! ) , 0 ) ;
153- logger . success ( `All deployments completed in ${ totalDuration . toFixed ( 1 ) } s` ) ;
154- } else {
155- logger . success ( "Differences shown for all regions" ) ;
151+
152+ const minutes = Math . floor ( totalDuration / 60 ) ;
153+ const seconds = Math . floor ( totalDuration % 60 ) ;
154+ const timeStr = minutes > 0 ? `${ minutes } m ${ seconds } s` : `${ seconds } s` ;
155+ console . log ( ` Total time: ${ timeStr } ` ) ;
156+ }
157+
158+ if ( failed . length > 0 ) {
159+ process . exit ( 1 ) ;
156160 }
157161}
158162
0 commit comments