diff --git a/packages/contentstack-import/src/commands/cm/stacks/import.ts b/packages/contentstack-import/src/commands/cm/stacks/import.ts index 0c893cbca..fc0a86920 100644 --- a/packages/contentstack-import/src/commands/cm/stacks/import.ts +++ b/packages/contentstack-import/src/commands/cm/stacks/import.ts @@ -108,6 +108,10 @@ export default class ImportCommand extends Command { description: 'Skips entry publishing during the import process', default: false, }), + 'skip-taxonomy-publish': flags.boolean({ + description: 'Skips taxonomy publishing during the import process.', + default: true, + }), }; static usage: string = diff --git a/packages/contentstack-import/src/config/index.ts b/packages/contentstack-import/src/config/index.ts index e3c658af1..21d837c89 100644 --- a/packages/contentstack-import/src/config/index.ts +++ b/packages/contentstack-import/src/config/index.ts @@ -493,6 +493,7 @@ const config: DefaultConfig = { //'taxonomies', 'environments', 'marketplace_apps', workflows, custom-roles --> Add this incase need to extend to the other global modules globalModules: ['webhooks'], entriesPublish: true, + skipTaxonomyPublish: true, }; export const PUBLISHING_RULES_APPROVERS_SKIP_MSG = 'Skipping import of publish rule approver(s) (roles/users); reconfigure approvers on the target stack.'; diff --git a/packages/contentstack-import/src/import/modules/taxonomies.ts b/packages/contentstack-import/src/import/modules/taxonomies.ts index 402905647..9d598c94e 100644 --- a/packages/contentstack-import/src/import/modules/taxonomies.ts +++ b/packages/contentstack-import/src/import/modules/taxonomies.ts @@ -104,7 +104,7 @@ export default class ImportTaxonomies extends BaseClass { progress.completeProcess(PROCESS_NAMES.TAXONOMIES_IMPORT, true); - if (publishJobCount > 0) { + if (this.importConfig.skipTaxonomyPublish === false && publishJobCount > 0) { progress .startProcess(PROCESS_NAMES.TAXONOMIES_PUBLISH) .updateStatus( @@ -389,7 +389,7 @@ export default class ImportTaxonomies extends BaseClass { */ initializeTaxonomiesProgress(progress: CLIProgressManager, taxonomyCount: number, publishJobCount: number): void { progress.addProcess(PROCESS_NAMES.TAXONOMIES_IMPORT, taxonomyCount); - if (publishJobCount > 0) { + if (this.importConfig.skipTaxonomyPublish === false && publishJobCount > 0) { progress.addProcess(PROCESS_NAMES.TAXONOMIES_PUBLISH, publishJobCount); } } @@ -570,8 +570,11 @@ export default class ImportTaxonomies extends BaseClass { this.isLocaleBasedStructure = this.detectAndScanLocaleStructure(); const taxonomyCount = Object.keys(this.taxonomies || {}).length; - const envMapper = readEnvUidMapperSync(this.envUidMapperPath, this.importConfig.context); - const publishJobCount = this.countPublishEligibleTaxonomies(envMapper); + let publishJobCount = 0; + if (this.importConfig.skipTaxonomyPublish === false) { + const envMapper = readEnvUidMapperSync(this.envUidMapperPath, this.importConfig.context); + publishJobCount = this.countPublishEligibleTaxonomies(envMapper); + } log.debug( `Loaded ${taxonomyCount} taxonomy items; ${publishJobCount} eligible for publish (mapped environments).`, diff --git a/packages/contentstack-import/src/types/default-config.ts b/packages/contentstack-import/src/types/default-config.ts index 095a95a27..8a0cb4a28 100644 --- a/packages/contentstack-import/src/types/default-config.ts +++ b/packages/contentstack-import/src/types/default-config.ts @@ -227,5 +227,6 @@ export default interface DefaultConfig { globalModules: string[]; skipAssetsPublish?: boolean; skipEntriesPublish?: boolean; + skipTaxonomyPublish?: boolean; entriesPublish: boolean; } diff --git a/packages/contentstack-import/src/types/import-config.ts b/packages/contentstack-import/src/types/import-config.ts index 1587a360e..847010f49 100644 --- a/packages/contentstack-import/src/types/import-config.ts +++ b/packages/contentstack-import/src/types/import-config.ts @@ -14,6 +14,7 @@ export default interface ImportConfig extends DefaultConfig, ExternalConfig { authenticationMethod?: string; skipAssetsPublish?: boolean; skipEntriesPublish?: boolean; + skipTaxonomyPublish?: boolean; cliLogsPath: string; canCreatePrivateApp: boolean; contentDir: string; diff --git a/packages/contentstack-import/src/utils/import-config-handler.ts b/packages/contentstack-import/src/utils/import-config-handler.ts index be5807ab0..9ceba2d69 100644 --- a/packages/contentstack-import/src/utils/import-config-handler.ts +++ b/packages/contentstack-import/src/utils/import-config-handler.ts @@ -125,6 +125,8 @@ const setupConfig = async (importCmdFlags: any): Promise => { config.skipEntriesPublish = importCmdFlags['skip-entries-publish']; } + config.skipTaxonomyPublish = importCmdFlags['skip-taxonomy-publish'] ?? true; + config.replaceExisting = importCmdFlags['replace-existing']; config.skipExisting = importCmdFlags['skip-existing']; diff --git a/packages/contentstack-import/test/unit/import/modules/locales.test.ts b/packages/contentstack-import/test/unit/import/modules/locales.test.ts index f6e90b885..ab9835161 100644 --- a/packages/contentstack-import/test/unit/import/modules/locales.test.ts +++ b/packages/contentstack-import/test/unit/import/modules/locales.test.ts @@ -192,6 +192,7 @@ describe('ImportLocales', () => { overwriteSupportedModules: [], globalModules: [], entriesPublish: false, + skipTaxonomyPublish: true, cliLogsPath: '/test/logs', canCreatePrivateApp: false, forceStopMarketplaceAppsPrompt: false, diff --git a/packages/contentstack-import/test/unit/utils/import-config-handler.test.ts b/packages/contentstack-import/test/unit/utils/import-config-handler.test.ts index 15e41a691..eeb03dcf3 100644 --- a/packages/contentstack-import/test/unit/utils/import-config-handler.test.ts +++ b/packages/contentstack-import/test/unit/utils/import-config-handler.test.ts @@ -389,6 +389,27 @@ describe('Import Config Handler', () => { expect(result.skipEntriesPublish).to.be.true; }); + it('should set skipTaxonomyPublish to true by default', async () => { + const importCmdFlags = { + data: '/test/content', + }; + + const result = await setupConfig(importCmdFlags); + + expect(result.skipTaxonomyPublish).to.be.true; + }); + + it('should allow skipTaxonomyPublish to be overridden to false', async () => { + const importCmdFlags = { + data: '/test/content', + 'skip-taxonomy-publish': false, + }; + + const result = await setupConfig(importCmdFlags); + + expect(result.skipTaxonomyPublish).to.be.false; + }); + it('should set replaceExisting from replace-existing flag', async () => { const importCmdFlags = { data: '/test/content',