From 56fb34a890c073aaf8d499a510904ea3c13868f7 Mon Sep 17 00:00:00 2001 From: Martin Middel Date: Tue, 19 May 2026 15:56:55 +0200 Subject: [PATCH 1/2] fix(error-code): do not throw (but not catch) errors codes Instead, let them be handled as a normal response. The consuming code checks status codes. --- src/lib/client.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/client.js b/src/lib/client.js index 951cad0..48ad908 100644 --- a/src/lib/client.js +++ b/src/lib/client.js @@ -11,6 +11,7 @@ export function initClient(options) { baseURL: options.server, jar: cookieJar, withCredentials: true, + validateStatus: null }) ); } From bd38a6c95528355b06f70f2d361c36ceda2d691f Mon Sep 17 00:00:00 2001 From: Martin Middel Date: Tue, 19 May 2026 16:04:33 +0200 Subject: [PATCH 2/2] fix(generator): return non-zero status code when generate failed --- src/lib/generator.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/lib/generator.js b/src/lib/generator.js index 1d9d226..3e46b12 100644 --- a/src/lib/generator.js +++ b/src/lib/generator.js @@ -56,7 +56,7 @@ export async function update(config, options, client, resolve = []) { await loginUser(client, options); } catch (error) { console.error(error.message); - return; + process.exit(1); } let spinner = ora('Starting generator ...').start(); @@ -67,7 +67,7 @@ export async function update(config, options, client, resolve = []) { if (generatorResponse.status !== 200) { spinner.fail('Generator failed with error: ' + generatorResponse.status); console.error(generatorResponse.data); - return; + process.exit(1); } spinner.stop(); @@ -79,7 +79,7 @@ export async function update(config, options, client, resolve = []) { chalk.red('Update was blocked due to breaking changes, even with --confirm-breaking. Check server logs or response:'), ); console.error(output); - return; + process.exit(1); } if (options.quiet) { console.error( @@ -87,7 +87,7 @@ export async function update(config, options, client, resolve = []) { 'Breaking profile changes were detected. Re-run with --confirm-breaking to proceed non-interactively, or omit --quiet to confirm interactively.', ), ); - return; + process.exit(1); } printBreakingChangeDetails(output); const proceed = await confirm({ @@ -104,13 +104,15 @@ export async function update(config, options, client, resolve = []) { if (generatorResponse.status !== 200) { console.error(chalk.red('Generator failed with error: ' + generatorResponse.status)); console.error(generatorResponse.data); - return; + process.exit(1); + } output = generatorResponse.data; if (isGeneratorBlockedByBreakingChanges(output)) { console.error(chalk.red('Update is still blocked after confirmation. Server response:')); console.error(output); - return; + process.exit(1); + } } @@ -187,7 +189,7 @@ export async function update(config, options, client, resolve = []) { if (deployResponse.status !== 200) { spinner.fail('Deploy failed with code ' + deployResponse.status + ': ' + deployResponse.data); console.error('Deploy failed:', deployResponse.status, deployResponse.data); - return; + process.exit(1); } spinner.stop(); console.log(chalk.green('Done!'));