Skip to content

Commit 28cfaea

Browse files
authored
Merge pull request #5230 from Shopify/01-17-don_t_start_the_dev_session_if_there_are_build_errors
Don't start the dev session if there are build errors
2 parents e27d778 + fe089c6 commit 28cfaea

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

packages/app/src/cli/services/dev/processes/dev-session.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,15 @@ export const pushUpdatesForDevSession: DevProcessFunction<DevSessionOptions> = a
147147
)
148148
})
149149
.onStart(async (event) => {
150+
const buildErrors = event.extensionEvents.filter((eve) => eve.buildResult?.status === 'error')
151+
if (buildErrors.length) {
152+
const errors = buildErrors.map((error) => ({
153+
error: 'Build error. Please review your code and try again.',
154+
prefix: error.extension.handle,
155+
}))
156+
await printMultipleErrors(errors, processOptions.stdout)
157+
throw new AbortError('Dev session aborted, build errors detected in extensions.')
158+
}
150159
const result = await bundleExtensionsAndUpload({...processOptions, app: event.app})
151160
await handleDevSessionResult(result, {...processOptions, app: event.app})
152161
})
@@ -335,6 +344,16 @@ async function printError(message: string, stdout: Writable, prefix?: string) {
335344
await printLogMessage(outputContent`${content}`.value, stdout, prefix)
336345
}
337346

347+
async function printMultipleErrors(errors: {error: string; prefix: string}[], stdout: Writable) {
348+
const header = outputToken.errorText(`❌ Error`)
349+
await printLogMessage(outputContent`${header}`.value, stdout, 'dev-session')
350+
const messages = errors.map((error) => {
351+
const content = outputToken.errorText(`└ ${error.error}`)
352+
return printLogMessage(outputContent`${content}`.value, stdout, error.prefix)
353+
})
354+
await Promise.all(messages)
355+
}
356+
338357
async function printSuccess(message: string, stdout: Writable) {
339358
await printLogMessage(outputContent`${outputToken.green(message)}`.value, stdout)
340359
}

0 commit comments

Comments
 (0)