@@ -21,8 +21,11 @@ import semver, { clean, lt } from 'semver';
21
21
import { dedent } from 'ts-dedent' ;
22
22
23
23
import { processAutoblockerResults } from './autoblock/utils' ;
24
- import { type AutomigrationCheckResult , runAutomigrations } from './automigrate/multi-project' ;
25
- import type { FixId } from './automigrate/types' ;
24
+ import {
25
+ type AutomigrationCheckResult ,
26
+ type AutomigrationResult ,
27
+ runAutomigrations ,
28
+ } from './automigrate/multi-project' ;
26
29
import { FixStatus } from './automigrate/types' ;
27
30
import { displayDoctorResults , runMultiProjectDoctor } from './doctor' ;
28
31
import type { ProjectDoctorData , ProjectDoctorResults } from './doctor/types' ;
@@ -127,30 +130,32 @@ export type UpgradeOptions = {
127
130
} ;
128
131
129
132
function getUpgradeResults (
130
- projectResults : Record < string , Record < FixId , FixStatus > > ,
133
+ projectResults : Record < string , AutomigrationResult > ,
131
134
doctorResults : Record < string , ProjectDoctorResults >
132
135
) {
133
136
const successfulProjects : string [ ] = [ ] ;
134
137
const failedProjects : string [ ] = [ ] ;
135
138
const projectsWithNoFixes : string [ ] = [ ] ;
136
139
137
- const allProjects = Object . entries ( projectResults ) . map ( ( [ configDir , fixResults ] ) => {
138
- const automigrationResults = Object . entries ( fixResults ) . map ( ( [ fixId , status ] ) => {
139
- const succeeded = status === FixStatus . SUCCEEDED || status === FixStatus . MANUAL_SUCCEEDED ;
140
- return {
141
- fixId,
142
- status,
143
- succeeded,
144
- } ;
145
- } ) ;
140
+ const allProjects = Object . entries ( projectResults ) . map ( ( [ configDir , resultData ] ) => {
141
+ const automigrationResults = Object . entries ( resultData . automigrationStatuses ) . map (
142
+ ( [ fixId , status ] ) => {
143
+ const succeeded = status === FixStatus . SUCCEEDED || status === FixStatus . MANUAL_SUCCEEDED ;
144
+ return {
145
+ fixId,
146
+ status,
147
+ succeeded,
148
+ } ;
149
+ }
150
+ ) ;
146
151
147
152
const hasFailures = automigrationResults . some (
148
153
( fix ) => fix . status === FixStatus . FAILED || fix . status === FixStatus . CHECK_FAILED
149
154
) ;
150
155
const hasSuccessfulFixes = automigrationResults . some (
151
156
( fix ) => fix . status === FixStatus . SUCCEEDED || fix . status === FixStatus . MANUAL_SUCCEEDED
152
157
) ;
153
- const noFixesNeeded = Object . keys ( fixResults ) . length === 0 ;
158
+ const noFixesNeeded = Object . keys ( resultData . automigrationStatuses ) . length === 0 ;
154
159
155
160
// Determine if migration was successful (has successful fixes and no failures)
156
161
const migratedSuccessfully = hasSuccessfulFixes && ! hasFailures ;
@@ -196,7 +201,7 @@ function getUpgradeResults(
196
201
197
202
/** Logs the results of the upgrade process, including project categorization and diagnostic messages */
198
203
function logUpgradeResults (
199
- projectResults : Record < string , Record < FixId , FixStatus > > ,
204
+ projectResults : Record < string , AutomigrationResult > ,
200
205
detectedAutomigrations : AutomigrationCheckResult [ ] ,
201
206
doctorResults : Record < string , ProjectDoctorResults >
202
207
) {
@@ -242,10 +247,10 @@ function logUpgradeResults(
242
247
const automigrationLinks = detectedAutomigrations
243
248
. filter ( ( am ) =>
244
249
Object . entries ( projectResults ) . some (
245
- ( [ _ , fixResults ] ) =>
246
- fixResults [ am . fix . id ] === FixStatus . FAILED ||
247
- fixResults [ am . fix . id ] === FixStatus . SUCCEEDED ||
248
- fixResults [ am . fix . id ] === FixStatus . CHECK_FAILED
250
+ ( [ _ , resultData ] ) =>
251
+ resultData . automigrationStatuses [ am . fix . id ] === FixStatus . FAILED ||
252
+ resultData . automigrationStatuses [ am . fix . id ] === FixStatus . SUCCEEDED ||
253
+ resultData . automigrationStatuses [ am . fix . id ] === FixStatus . CHECK_FAILED
249
254
)
250
255
)
251
256
. map ( ( am ) => `• ${ createHyperlink ( am . fix . id , am . fix . link ! ) } ` ) ;
@@ -267,7 +272,7 @@ function logUpgradeResults(
267
272
interface MultiUpgradeTelemetryOptions {
268
273
allProjects : CollectProjectsSuccessResult [ ] ;
269
274
selectedProjects : CollectProjectsSuccessResult [ ] ;
270
- projectResults : Record < string , Record < FixId , FixStatus > > ;
275
+ projectResults : Record < string , AutomigrationResult > ;
271
276
doctorResults : Record < string , ProjectDoctorResults > ;
272
277
hasUserInterrupted ?: boolean ;
273
278
}
@@ -339,7 +344,7 @@ export async function upgrade(options: UpgradeOptions): Promise<void> {
339
344
) ;
340
345
}
341
346
342
- const automigrationResults : Record < string , Record < FixId , FixStatus > > = { } ;
347
+ const automigrationResults : Record < string , AutomigrationResult > = { } ;
343
348
let doctorResults : Record < string , ProjectDoctorResults > = { } ;
344
349
345
350
// Set up signal handling for interruptions
@@ -481,7 +486,10 @@ export async function upgrade(options: UpgradeOptions): Promise<void> {
481
486
// TELEMETRY
482
487
if ( ! options . disableTelemetry ) {
483
488
for ( const project of storybookProjects ) {
484
- const fixResults = automigrationResults [ project . configDir ] || { } ;
489
+ const resultData = automigrationResults [ project . configDir ] || {
490
+ automigrationStatuses : { } ,
491
+ automigrationErrors : { } ,
492
+ } ;
485
493
let doctorFailureCount = 0 ;
486
494
let doctorErrorCount = 0 ;
487
495
Object . values ( doctorResults [ project . configDir ] ?. diagnostics || { } ) . forEach ( ( status ) => {
@@ -493,9 +501,7 @@ export async function upgrade(options: UpgradeOptions): Promise<void> {
493
501
doctorErrorCount ++ ;
494
502
}
495
503
} ) ;
496
- const automigrationFailureCount = Object . values ( fixResults ) . filter (
497
- ( status ) => status === 'failed'
498
- ) . length ;
504
+ const automigrationFailureCount = Object . keys ( resultData . automigrationErrors ) . length ;
499
505
const automigrationPreCheckFailure =
500
506
project . autoblockerCheckResults && project . autoblockerCheckResults . length > 0
501
507
? project . autoblockerCheckResults
@@ -510,7 +516,8 @@ export async function upgrade(options: UpgradeOptions): Promise<void> {
510
516
await telemetry ( 'upgrade' , {
511
517
beforeVersion : project . beforeVersion ,
512
518
afterVersion : project . currentCLIVersion ,
513
- automigrationResults : fixResults ,
519
+ automigrationResults : resultData . automigrationStatuses ,
520
+ automigrationErrors : resultData . automigrationErrors ,
514
521
automigrationFailureCount,
515
522
automigrationPreCheckFailure,
516
523
doctorResults : doctorResults [ project . configDir ] ?. diagnostics || { } ,
0 commit comments