From 103e630842afd34d2a5baf601e935581ecd296a5 Mon Sep 17 00:00:00 2001 From: naman-contentstack Date: Sun, 18 Jan 2026 14:53:29 +0530 Subject: [PATCH] fix: inconsistent log messages in case of failures --- .../src/commands/cm/stacks/import.ts | 9 +-------- .../progress-summary/cli-progress-manager.ts | 10 ++++++++++ .../src/progress-summary/summary-manager.ts | 17 +++++++++++++---- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/packages/contentstack-import/src/commands/cm/stacks/import.ts b/packages/contentstack-import/src/commands/cm/stacks/import.ts index 79d84d17fe..dce995fff3 100644 --- a/packages/contentstack-import/src/commands/cm/stacks/import.ts +++ b/packages/contentstack-import/src/commands/cm/stacks/import.ts @@ -148,14 +148,7 @@ export default class ImportCommand extends Command { const moduleImporter = new ModuleImporter(managementAPIClient, importConfig); const result = await moduleImporter.start(); backupDir = importConfig.backupDir; - - if (!result?.noSuccessMsg) { - const successMessage = importConfig.stackName - ? `Successfully imported the content to the stack named ${importConfig.stackName} with the API key ${importConfig.apiKey} .` - : `The content has been imported to the stack ${importConfig.apiKey} successfully!`; - log.success(successMessage, importConfig.context); - } - + //Note: Final summary is now handled by summary manager CLIProgressManager.printGlobalSummary(); this.logSuccessAndBackupMessages(backupDir, importConfig); // Clear progress module setting now that import is complete diff --git a/packages/contentstack-utilities/src/progress-summary/cli-progress-manager.ts b/packages/contentstack-utilities/src/progress-summary/cli-progress-manager.ts index 3b0b1b473a..32b1762f50 100644 --- a/packages/contentstack-utilities/src/progress-summary/cli-progress-manager.ts +++ b/packages/contentstack-utilities/src/progress-summary/cli-progress-manager.ts @@ -108,6 +108,16 @@ export default class CLIProgressManager { CLIProgressManager.globalSummary.printFinalSummary(); } + /** + * Check if there are any failures in the global summary + */ + static hasFailures(): boolean { + if (!CLIProgressManager.globalSummary) { + return false; + } + return CLIProgressManager.globalSummary.hasFailures(); + } + /** * Apply strategy-based corrections to module data */ diff --git a/packages/contentstack-utilities/src/progress-summary/summary-manager.ts b/packages/contentstack-utilities/src/progress-summary/summary-manager.ts index f4088c858c..a8073d5d89 100644 --- a/packages/contentstack-utilities/src/progress-summary/summary-manager.ts +++ b/packages/contentstack-utilities/src/progress-summary/summary-manager.ts @@ -131,10 +131,12 @@ export default class SummaryManager { // Final Status console.log('\n' + chalk.bold('Final Status:')); - if (failedModules === 0) { - console.log(chalk.bold.green(`🎉 ${this.operationName} completed successfully!`)); - } else if (completedModules > 0) { - console.log(chalk.bold.yellow(`⚠️ ${this.operationName} completed with ${failedModules} failed modules`)); + if (!this.hasFailures() && failedModules === 0) { + console.log(chalk.bold.green(`✅ ${this.operationName} completed successfully!`)); + } else if (this.hasFailures() || failedModules > 0) { + console.log( + chalk.bold.yellow(`⚠️ ${this.operationName} completed with failures, see the logs for more details.`), + ); } else { console.log(chalk.bold.red(`❌ ${this.operationName} failed`)); } @@ -146,6 +148,13 @@ export default class SummaryManager { this.printFailureSummaryWithLogReference(); } + /** + * Check if there are any failures across all modules + */ + hasFailures(): boolean { + return Array.from(this.modules.values()).some((m) => m.failures.length > 0 || m.failureCount > 0); + } + private printFailureSummaryWithLogReference(): void { const modulesWithFailures = Array.from(this.modules.values()).filter((m) => m.failures.length > 0);