From 501c670e7ba8fd001ab830e8c5893b1697b731f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?= Date: Tue, 28 Jan 2025 10:16:45 +0100 Subject: [PATCH 1/5] #2013: replace custom createDeltaPackage logic for templating with build-command --- @types/lib/util/devops.d.ts.map | 2 +- lib/util/devops.js | 101 ++++++-------------------------- 2 files changed, 19 insertions(+), 84 deletions(-) diff --git a/@types/lib/util/devops.d.ts.map b/@types/lib/util/devops.d.ts.map index d8c1e2e2d..12384ac77 100644 --- a/@types/lib/util/devops.d.ts.map +++ b/@types/lib/util/devops.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"devops.d.ts","sourceRoot":"","sources":["../../../lib/util/devops.js"],"names":[],"mappings":";yBAca,OAAO,wBAAwB,EAAE,UAAU;uBAC3C,OAAO,wBAAwB,EAAE,QAAQ;oBACzC,OAAO,wBAAwB,EAAE,KAAK;0BACtC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;2BAChD,OAAO,wBAAwB,EAAE,YAAY;sBAC7C,OAAO,wBAAwB,EAAE,OAAO;+BACxC,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;oCACnD,OAAO,wBAAwB,EAAE,qBAAqB;mCACtD,OAAO,wBAAwB,EAAE,oBAAoB;gCACrD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;2BAC5C,OAAO,wBAAwB,EAAE,YAAY;;IAOtD;;;;;;;;;;OAUG;IACH,kCAPW,OAAO,UACP,MAAM,oBACN,OAAO,mBACP,MAAM,kBACN,MAAM,GACJ,OAAO,CAAE,YAAY,EAAE,CAAC,CAmVpC;IAED;;;;;;;;OAQG;IACH,2CANW,OAAO,SACP,MAAM,YACN,YAAY,EAAE,kBACd,MAAM,GACJ,OAAO,CAAE,YAAY,EAAE,CAAC,CAqLpC;IAED;;;;;;OAMG;IACH,6BAJW,MAAM,cACN,MAAM,GACJ,IAAI,CA4BhB;IAED;;;;;;;;;OASG;IACH,sCANW,OAAO,YACP,QAAQ,gBACR,MAAM,UACN,MAAM,EAAE,GACN,OAAO,CAAE,MAAM,EAAE,CAAC,CAM9B"} \ No newline at end of file +{"version":3,"file":"devops.d.ts","sourceRoot":"","sources":["../../../lib/util/devops.js"],"names":[],"mappings":";yBAca,OAAO,wBAAwB,EAAE,UAAU;uBAC3C,OAAO,wBAAwB,EAAE,QAAQ;oBACzC,OAAO,wBAAwB,EAAE,KAAK;0BACtC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;2BAChD,OAAO,wBAAwB,EAAE,YAAY;sBAC7C,OAAO,wBAAwB,EAAE,OAAO;+BACxC,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;oCACnD,OAAO,wBAAwB,EAAE,qBAAqB;mCACtD,OAAO,wBAAwB,EAAE,oBAAoB;gCACrD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;2BAC5C,OAAO,wBAAwB,EAAE,YAAY;;IAOtD;;;;;;;;;;OAUG;IACH,kCAPW,OAAO,UACP,MAAM,oBACN,OAAO,mBACP,MAAM,kBACN,MAAM,GACJ,OAAO,CAAE,YAAY,EAAE,CAAC,CAmVpC;IAED;;;;;;;;OAQG;IACH,2CANW,OAAO,SACP,MAAM,YACN,YAAY,EAAE,kBACd,MAAM,GACJ,OAAO,CAAE,YAAY,EAAE,CAAC,CAoHpC;IAED;;;;;;OAMG;IACH,6BAJW,MAAM,cACN,MAAM,GACJ,IAAI,CA4BhB;IAED;;;;;;;;;OASG;IACH,sCANW,OAAO,YACP,QAAQ,gBACR,MAAM,UACN,MAAM,EAAE,GACN,OAAO,CAAE,MAAM,EAAE,CAAC,CAM9B"} \ No newline at end of file diff --git a/lib/util/devops.js b/lib/util/devops.js index cac62f1ff..c9fb1d02b 100644 --- a/lib/util/devops.js +++ b/lib/util/devops.js @@ -5,7 +5,7 @@ import { Util } from './util.js'; import Cli from './cli.js'; import { simpleGit } from 'simple-git'; const git = simpleGit(); -import Builder from '../Builder.js'; +import mcdev from '../index.js'; import MetadataType from '../MetadataTypeInfo.js'; import jsonToTable from 'json-to-table'; import pLimit from 'p-limit'; @@ -395,7 +395,6 @@ const DevOps = { * @returns {Promise.} - */ async buildDeltaDefinitions(properties, range, diffArr, commitHistory) { - const skipInteraction = Util.skipInteraction; // check if sourceTargetMapping is valid if ( !properties.options.deployment.sourceTargetMapping || @@ -471,99 +470,35 @@ const DevOps = { // Put files into maps. One map with BU -> type -> file (for retrieveAsTemplate) // Other map only with type -> file (for buildDefinitionBulk) const buTypeDelta = {}; // for bt, with BU info - const typeDelta = {}; // for bdb, without BU info - thats taken from the marketList - let deltaCounter = 0; const deltaDeploy = delta // Only template/build files that were added/updated/moved. no deletions // ! doesn't work for folder, because their name parsing doesnt work at the moment .filter((file) => file.gitAction !== 'delete' && file.name); deltaDeployAll.push(...deltaDeploy); for (const file of deltaDeploy) { - const buPath = `${file._credential}/${file._businessUnit}`; - if (!buTypeDelta[buPath]) { + const buFrom = `${file._credential}/${file._businessUnit}`; + if (!buTypeDelta[buFrom]) { // init object - buTypeDelta[buPath] = {}; + /** @type {TypeKeyCombo} */ + buTypeDelta[buFrom] = {}; } - if (!buTypeDelta[buPath][file.type]) { + if (!buTypeDelta[buFrom][file.type]) { // init array - buTypeDelta[buPath][file.type] = []; + buTypeDelta[buFrom][file.type] = new Set(); } - buTypeDelta[buPath][file.type].push(file.externalKey); - } - - // Run buildTemplate for each business unit for each type - Util.logger.info('Retrieve template from Git delta'); - // ! needs to be for (.. in ..) loop so that it gets executed in series - for (const bu in buTypeDelta) { - for (const type in buTypeDelta[bu]) { - // get unique list (original search might include more than one entry for types with docs or extracted code) - const keyArr = [...new Set(buTypeDelta[bu][type])]; - Util.logger.info( - `⚡ mcdev bt ${bu} ${type} "${keyArr.join(',')}" ${sourceMarket}` - ); - await Builder.buildTemplate(bu, type, keyArr, [sourceMarket]); - // ensure we have the right key for bd/bdb that matches the name used for rt - if (keyArr.length) { - if (!typeDelta[type]) { - // init array - typeDelta[type] = []; - } - typeDelta[type].push(...keyArr); - deltaCounter += keyArr.length; - } - } - } - if (deltaCounter) { - Util.logger.info(`- ✔️ Templates created: ${deltaCounter}`); - } else { - Util.logger.warn( - `- No Templates or Deploy Definitions created for ${sourceMlName}` - ); - continue; - } - - // Run build definitions bulk for each type - Util.logger.info('============='); - Util.logger.info('Build deploy definitions from delta templates'); - if ( - properties.directories.templateBuilds == properties.directories.deploy || - (Array.isArray(properties.directories.templateBuilds) && - properties.directories.templateBuilds.includes(properties.directories.deploy)) - ) { - let isPurgeDeployFolder; - if (!skipInteraction) { - // deploy folder is in targets for definition creation - // recommend to purge their content first - isPurgeDeployFolder = await confirm({ - message: - 'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?', - default: true, - }); + if (!buTypeDelta[buFrom][file.type].includes(file.externalKey)) { + buTypeDelta[buFrom][file.type].push(file.externalKey); } - if (skipInteraction || isPurgeDeployFolder) { - // Clear output folder structure for selected sub-type - await File.remove(File.normalizePath([properties.directories.deploy])); - } - } - const bdPromises = []; - for (const type in typeDelta) { - Util.logger.info( - `⚡ mcdev bdb ${targetMlName} ${type} "${typeDelta[type].join(',')}"` - ); - // omitting "await" to speed up creation - bdPromises.push(Builder.buildDefinitionBulk(targetMlName, type, typeDelta[type])); } - await Promise.all(bdPromises); - Util.logger.info(`- ✔️ Deploy definitions created`); - if ( - properties.directories.templateBuilds == properties.directories.deploy || - (Array.isArray(properties.directories.templateBuilds) && - properties.directories.templateBuilds.includes(properties.directories.deploy)) - ) { - Util.logger.info(`You can now run deploy on the prepared BUs`); - } else { - Util.logger.info( - `Your templated defintions are now ready to be copied into the deploy folder. Hint: You can have this auto-copied if you adjust directories.templateBuilds in your config.` + for (const buFrom in buTypeDelta) { + // Run buildTemplate for each business unit for each type + await mcdev.build( + buFrom, + undefined, + buTypeDelta[buFrom], + [sourceMarket], + [targetMlName], + true ); } } From 7c90d976277dedcda71a482340f166c0bf3751d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?= Date: Tue, 28 Jan 2025 10:50:40 +0100 Subject: [PATCH 2/5] #2013: ensure consistent typeKeyCombo checks & refactoring --- @types/lib/index.d.ts | 8 +- @types/lib/index.d.ts.map | 2 +- @types/lib/util/util.d.ts | 8 ++ @types/lib/util/util.d.ts.map | 2 +- lib/index.js | 157 +++++++++++++++------------------- lib/util/util.js | 30 +++++++ 6 files changed, 113 insertions(+), 94 deletions(-) diff --git a/@types/lib/index.d.ts b/@types/lib/index.d.ts index ea6cc146d..1677c4490 100644 --- a/@types/lib/index.d.ts +++ b/@types/lib/index.d.ts @@ -228,17 +228,17 @@ declare class Mcdev { static retrieveAsTemplate(businessUnit: string, selectedType: string, name: string[], market: string): Promise; /** * @param {string} businessUnit references credentials from properties.json - * @param {TypeKeyCombo} selectedTypes limit retrieval to given metadata type + * @param {TypeKeyCombo} typeKeyList limit retrieval to given metadata type * @returns {Promise.} selected types including dependencies */ - static addDependentCbReferences(businessUnit: string, selectedTypes: TypeKeyCombo): Promise; + static addDependentCbReferences(businessUnit: string, typeKeyList: TypeKeyCombo): Promise; /** * * @param {string} businessUnit references credentials from properties.json - * @param {TypeKeyCombo} selectedTypes limit retrieval to given metadata type + * @param {TypeKeyCombo} typeKeyList limit retrieval to given metadata type * @returns {Promise.} dependencies */ - static addDependencies(businessUnit: string, selectedTypes: TypeKeyCombo): Promise; + static addDependencies(businessUnit: string, typeKeyList: TypeKeyCombo): Promise; /** * Build a template based on a list of metadata files in the retrieve folder. * diff --git a/@types/lib/index.d.ts.map b/@types/lib/index.d.ts.map index 421d77170..cf02137ed 100644 --- a/@types/lib/index.d.ts.map +++ b/@types/lib/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.js"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.js"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/@types/lib/util/util.d.ts b/@types/lib/util/util.d.ts index 421f6143b..e24420ea7 100644 --- a/@types/lib/util/util.d.ts +++ b/@types/lib/util/util.d.ts @@ -54,6 +54,14 @@ export namespace Util { * @param {Mcdevrc} properties General configuration to be used in retrieve */ function verifyMarketList(mlName: string, properties: Mcdevrc): void; + /** + * + * @param {string | TypeKeyCombo} selectedTypes supported metadata type + * @param {string[]} [keyArr] name/key of the metadata + * @param {string} [commandName] for log output only + * @returns {TypeKeyCombo} true if everything is valid; false otherwise + */ + function checkAndPrepareTypeKeyCombo(selectedTypes: string | TypeKeyCombo, keyArr?: string[], commandName?: string): TypeKeyCombo; /** * used to ensure the program tells surrounding software that an unrecoverable error occured * diff --git a/@types/lib/util/util.d.ts.map b/@types/lib/util/util.d.ts.map index 01ccba6c5..4d9e9ca02 100644 --- a/@types/lib/util/util.d.ts.map +++ b/@types/lib/util/util.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../lib/util/util.js"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../lib/util/util.js"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index d3bf96661..db80c6071 100644 --- a/lib/index.js +++ b/lib/index.js @@ -904,14 +904,14 @@ class Mcdev { /** * @param {string} businessUnit references credentials from properties.json - * @param {TypeKeyCombo} selectedTypes limit retrieval to given metadata type + * @param {TypeKeyCombo} typeKeyList limit retrieval to given metadata type * @returns {Promise.} selected types including dependencies */ - static async addDependentCbReferences(businessUnit, selectedTypes) { + static async addDependentCbReferences(businessUnit, typeKeyList) { if (!Util.OPTIONS.dependencies) { return; } - const initialAssetNumber = selectedTypes['asset']?.length || 0; + const initialAssetNumber = typeKeyList['asset']?.length || 0; const properties = await config.getProperties(); const buObject = await Cli.getCredentialObject(properties, businessUnit); Util.logger.info( @@ -936,7 +936,7 @@ class Mcdev { ]) ); // check all non-asset types for dependencies - for (const depType in selectedTypes) { + for (const depType in typeKeyList) { if ( !Object.prototype.hasOwnProperty.call( MetadataTypeInfo[depType], @@ -949,7 +949,7 @@ class Mcdev { MetadataTypeInfo[depType].properties = properties; MetadataTypeInfo[depType].buObject = buObject; await MetadataTypeInfo[depType].getCbReferenceKeys( - selectedTypes[depType], + typeKeyList[depType], retrieveDir, assetDependencies ); @@ -957,26 +957,26 @@ class Mcdev { // add dependencies to selectedTypes if (assetDependencies.size) { const depType = 'asset'; - if (selectedTypes[depType]) { - selectedTypes[depType].push(...assetDependencies); + if (typeKeyList[depType]) { + typeKeyList[depType].push(...assetDependencies); } else { - selectedTypes[depType] = [...assetDependencies]; + typeKeyList[depType] = [...assetDependencies]; } // remove duplicates in main object after adding dependencies - selectedTypes[depType] = [...new Set(selectedTypes[depType])]; + typeKeyList[depType] = [...new Set(typeKeyList[depType])]; } // check all assets for dependencies recursively - if (selectedTypes.asset?.length) { + if (typeKeyList.asset?.length) { const depType = 'asset'; const Asset = MetadataTypeInfo[depType]; Asset.properties = properties; Asset.buObject = buObject; const additionalAssetDependencies = [ ...(await Asset.getCbReferenceKeys( - selectedTypes[depType], + typeKeyList[depType], retrieveDir, - new Set(selectedTypes[depType]) + new Set(typeKeyList[depType]) )), ]; if (additionalAssetDependencies.length) { @@ -988,19 +988,19 @@ class Mcdev { Asset.getJsonFromFSCache = null; // remove duplicates in main object after adding dependencies - selectedTypes[depType] = [...new Set(selectedTypes[depType])]; + typeKeyList[depType] = [...new Set(typeKeyList[depType])]; } - return selectedTypes; + return typeKeyList; } /** * * @param {string} businessUnit references credentials from properties.json - * @param {TypeKeyCombo} selectedTypes limit retrieval to given metadata type + * @param {TypeKeyCombo} typeKeyList limit retrieval to given metadata type * @returns {Promise.} dependencies */ - static async addDependencies(businessUnit, selectedTypes) { + static async addDependencies(businessUnit, typeKeyList) { if (!Util.OPTIONS.dependencies) { return; } @@ -1018,7 +1018,7 @@ class Mcdev { const dependencies = {}; /** @type {TypeKeyCombo} */ const notFoundList = {}; - const initiallySelectedTypesArr = Object.keys(selectedTypes); + const initiallySelectedTypesArr = Object.keys(typeKeyList); const properties = await config.getProperties(); const buObject = await Cli.getCredentialObject(properties, businessUnit); @@ -1026,7 +1026,7 @@ class Mcdev { MetadataTypeInfo[type].properties = properties; MetadataTypeInfo[type].buObject = buObject; await MetadataTypeInfo[type].getDependentFiles( - selectedTypes[type], + typeKeyList[type], dependencies, notFoundList, true @@ -1057,13 +1057,13 @@ class Mcdev { `Found ${Util.getTypeKeyCount(dependencies)} items across ${Object.keys(dependencies).length} types.` ); for (const type in dependencies) { - if (selectedTypes[type]) { - selectedTypes[type].push(...dependencies[type]); + if (typeKeyList[type]) { + typeKeyList[type].push(...dependencies[type]); } else { - selectedTypes[type] = dependencies[type]; + typeKeyList[type] = dependencies[type]; } // remove duplicates in main object after adding dependencies - selectedTypes[type] = [...new Set(selectedTypes[type])]; + typeKeyList[type] = [...new Set(typeKeyList[type])]; } } return dependencies; @@ -1153,24 +1153,17 @@ class Mcdev { return; } } - if ('string' === typeof selectedTypes) { - // ensure we have TypeKeyCombo here - selectedTypes = Util.createTypeKeyCombo(selectedTypes, keyArr); - } - // check if types are valid - for (const type of Object.keys(selectedTypes)) { - if (!Util._isValidType(type)) { - return; - } - if (!Array.isArray(selectedTypes[type])) { - Util.logger.error('You need to define keys, not just types to run buildTemplate'); - // we need an array of keys here - return; - } + const typeKeyList = Util.checkAndPrepareTypeKeyCombo( + selectedTypes, + keyArr, + 'buildTemplate' + ); + if (!typeKeyList) { + return; } if (!Util.OPTIONS.dependencies) { - await this._reRetrieve(businessUnit, false, selectedTypes); + await this._reRetrieve(businessUnit, false, typeKeyList); } // convert names to keys const retrieveDir = File.normalizePath([ @@ -1178,14 +1171,14 @@ class Mcdev { buObject.credential, buObject.businessUnit, ]); - for (const type of Object.keys(selectedTypes)) { - const keyArr = selectedTypes[type]; + for (const type of Object.keys(typeKeyList)) { + const keyArr = typeKeyList[type]; if (keyArr.some((key) => key.startsWith('name:'))) { // at least one key was provided as a name -> load all files from disk to try and find that key const builTemplateCache = Object.values( await MetadataTypeInfo[type].getJsonFromFS(retrieveDir + path.sep + type) ); - selectedTypes[type] = keyArr + typeKeyList[type] = keyArr .map((key) => { if (key.startsWith('name:')) { // key was defined by name. try and find matching item on disk @@ -1220,16 +1213,19 @@ class Mcdev { } // if dependencies are enabled, we need to search for them and add them to our - await this.addDependencies(businessUnit, selectedTypes); - await this.addDependentCbReferences(businessUnit, selectedTypes); + await this.addDependencies(businessUnit, typeKeyList); + await this.addDependentCbReferences(businessUnit, typeKeyList); /** @type {MultiMetadataTypeList} */ const returnObj = {}; - for (const type of Object.keys(selectedTypes)) { + for (const type of Object.keys(typeKeyList)) { + // ensure keys are sorted again, after finding dependencies, to enhance log readability + typeKeyList[type].sort(); + const result = await Builder.buildTemplate( businessUnit, type, - selectedTypes[type], + typeKeyList[type], marketArr ); returnObj[type] = result[type]; @@ -1291,22 +1287,15 @@ class Mcdev { return; } } - if ('string' === typeof selectedTypes) { - // ensure we have TypeKeyCombo here - selectedTypes = Util.createTypeKeyCombo(selectedTypes, nameArr); + const typeKeyList = Util.checkAndPrepareTypeKeyCombo( + selectedTypes, + nameArr, + 'buildDefinition' + ); + if (!typeKeyList) { + return; } - // check if types are valid - for (const type of Object.keys(selectedTypes)) { - if (!Util._isValidType(type)) { - return; - } - if (!Array.isArray(selectedTypes[type])) { - Util.logger.error('You need to define keys, not just types to run buildDefinition'); - // we need an array of keys here - return; - } - } // standard deploy folder const buObject = await Cli.getCredentialObject(properties, businessUnit); const deployDir = File.normalizePath([ @@ -1321,11 +1310,11 @@ class Mcdev { } /** @type {MultiMetadataTypeList} */ const returnObj = {}; - for (const type of Object.keys(selectedTypes)) { + for (const type of Object.keys(typeKeyList)) { const result = await Builder.buildDefinition( businessUnit, type, - selectedTypes[type], + typeKeyList[type], marketArr ); returnObj[type] = result[type]; @@ -1347,37 +1336,29 @@ class Mcdev { Util.startLogger(); Util.logger.info('mcdev:: Build Definition from Template Bulk'); - let selectedTypesArr; - if ('string' === typeof selectedTypes) { - selectedTypesArr = [selectedTypes]; - } else { - selectedTypesArr = Object.keys(selectedTypes); - // check if types are valid - for (const selectedType of selectedTypesArr) { - if (!Util._isValidType(selectedType)) { - return; - } - if (!Array.isArray(selectedTypes[selectedType])) { - Util.logger.error( - 'You need to define keys, not just types to run buildDefinitionBulk' - ); - // we need an array of keys here - return; - } - } + + const properties = await config.getProperties(); + try { + Util.verifyMarketList(listName, properties); + } catch (ex) { + Util.logger.error(ex.message); + return; } + const typeKeyList = Util.checkAndPrepareTypeKeyCombo( + selectedTypes, + nameArr, + 'buildDefinitionBulk' + ); + if (!typeKeyList) { + return; + } + /** @type {MultiMetadataTypeList} */ const returnObj = {}; - for (const selectedType of selectedTypesArr) { - if (selectedTypesArr.length > 1) { - Util.logger.info(Util.getGrayMsg(`buildDefinitionBulk for ${selectedType}`)); - } - const result = await Builder.buildDefinitionBulk( - listName, - selectedType, - 'string' === typeof selectedTypes ? nameArr : selectedTypes[selectedType] - ); - returnObj[selectedType] = result; + for (const type of Object.keys(typeKeyList)) { + Util.logger.info(Util.getGrayMsg(`buildDefinitionBulk for ${type}`)); + const result = await Builder.buildDefinitionBulk(listName, type, typeKeyList[type]); + returnObj[type] = result; } Util.logger.info('Done'); return returnObj; diff --git a/lib/util/util.js b/lib/util/util.js index 4791b97b8..fb290b751 100644 --- a/lib/util/util.js +++ b/lib/util/util.js @@ -161,6 +161,36 @@ export const Util = { throw new Error(`Market List ${mlName} is not defined`); } }, + /** + * + * @param {string | TypeKeyCombo} selectedTypes supported metadata type + * @param {string[]} [keyArr] name/key of the metadata + * @param {string} [commandName] for log output only + * @returns {TypeKeyCombo} true if everything is valid; false otherwise + */ + checkAndPrepareTypeKeyCombo(selectedTypes, keyArr, commandName) { + if ('string' === typeof selectedTypes) { + // ensure we have TypeKeyCombo here + /** @type {TypeKeyCombo} */ + selectedTypes = this.createTypeKeyCombo(selectedTypes, keyArr); + } + // check if types are valid + for (const type of Object.keys(selectedTypes)) { + if (!this._isValidType(type)) { + return; + } + if (!Array.isArray(selectedTypes[type]) || !selectedTypes[type].length) { + this.logger.error( + 'You need to define keys, not just types to run ' + (commandName || '') + ); + // we need an array of keys here + return; + } + // ensure keys are sorted to enhance log readability + selectedTypes[type].sort(); + } + return selectedTypes; + }, /** * used to ensure the program tells surrounding software that an unrecoverable error occured From 8e862d550d1e1a6f30f45855d63a8652e7cf7af7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?= Date: Tue, 28 Jan 2025 14:29:08 +0100 Subject: [PATCH 3/5] #2013: fix jsdoc --- @types/lib/util/util.d.ts | 4 ++-- @types/lib/util/util.d.ts.map | 2 +- lib/util/util.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/@types/lib/util/util.d.ts b/@types/lib/util/util.d.ts index e24420ea7..d57ffeca6 100644 --- a/@types/lib/util/util.d.ts +++ b/@types/lib/util/util.d.ts @@ -59,9 +59,9 @@ export namespace Util { * @param {string | TypeKeyCombo} selectedTypes supported metadata type * @param {string[]} [keyArr] name/key of the metadata * @param {string} [commandName] for log output only - * @returns {TypeKeyCombo} true if everything is valid; false otherwise + * @returns {TypeKeyCombo | undefined} true if everything is valid; false otherwise */ - function checkAndPrepareTypeKeyCombo(selectedTypes: string | TypeKeyCombo, keyArr?: string[], commandName?: string): TypeKeyCombo; + function checkAndPrepareTypeKeyCombo(selectedTypes: string | TypeKeyCombo, keyArr?: string[], commandName?: string): TypeKeyCombo | undefined; /** * used to ensure the program tells surrounding software that an unrecoverable error occured * diff --git a/@types/lib/util/util.d.ts.map b/@types/lib/util/util.d.ts.map index 4d9e9ca02..0bbfd9d9b 100644 --- a/@types/lib/util/util.d.ts.map +++ b/@types/lib/util/util.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../lib/util/util.js"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../lib/util/util.js"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/util/util.js b/lib/util/util.js index fb290b751..44e73f02b 100644 --- a/lib/util/util.js +++ b/lib/util/util.js @@ -166,7 +166,7 @@ export const Util = { * @param {string | TypeKeyCombo} selectedTypes supported metadata type * @param {string[]} [keyArr] name/key of the metadata * @param {string} [commandName] for log output only - * @returns {TypeKeyCombo} true if everything is valid; false otherwise + * @returns {TypeKeyCombo | undefined} true if everything is valid; false otherwise */ checkAndPrepareTypeKeyCombo(selectedTypes, keyArr, commandName) { if ('string' === typeof selectedTypes) { From 7aa3277257bcfb42d9a1bb91390a14a8a72dd13b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?= Date: Tue, 28 Jan 2025 17:28:11 +0100 Subject: [PATCH 4/5] #2013: fix buildDefinition and buildTemplate not returning correct keys if one key wasnt found --- @types/lib/Builder.d.ts.map | 2 +- lib/Builder.js | 76 +++++++++++++++++++------------------ 2 files changed, 41 insertions(+), 37 deletions(-) diff --git a/@types/lib/Builder.d.ts.map b/@types/lib/Builder.d.ts.map index 846c9fdda..eb083893c 100644 --- a/@types/lib/Builder.d.ts.map +++ b/@types/lib/Builder.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../lib/Builder.js"],"names":[],"mappings":";uBAUa,OAAO,qBAAqB,EAAE,QAAQ;0BACtC,OAAO,qBAAqB,EAAE,WAAW;8BACzC,OAAO,qBAAqB,EAAE,eAAe;sBAC7C,OAAO,qBAAqB,EAAE,OAAO;+BACrC,OAAO,qBAAqB,EAAE,gBAAgB;mCAC9C,OAAO,qBAAqB,EAAE,oBAAoB;kCAClD,OAAO,qBAAqB,EAAE,mBAAmB;8BACjD,OAAO,qBAAqB,EAAE,eAAe;iCAC7C,OAAO,qBAAqB,EAAE,kBAAkB;oCAChD,OAAO,qBAAqB,EAAE,qBAAqB;gCACnD,OAAO,qBAAqB,EAAE,iBAAiB;0BAC/C,OAAO,qBAAqB,EAAE,WAAW;AAZtD;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH;IA0EI;;;;;;;;OAQG;IACH,mCANW,MAAM,gBACN,MAAM,UACN,MAAM,EAAE,aACR,MAAM,EAAE,GACN,OAAO,CAAE,qBAAqB,CAAC,CA+B3C;IA2CD;;;;;;;;OAQG;IACH,qCANW,MAAM,gBACN,MAAM,WACN,MAAM,EAAE,aACR,MAAM,EAAE,GACN,OAAO,CAAE,qBAAqB,CAAC,CAgC3C;IAED;;;;;;;OAOG;IACH,qCALW,MAAM,QACN,MAAM,WACN,MAAM,EAAE,GACN,OAAO,CAAE,MAAM,CAAC,CAuD5B;IAhQD;;;;;;OAMG;IACH,wBAJW,OAAO,YAEP,QAAQ,EA4BlB;IAzBG,kDAA4B;IAC5B,oBAAkD;IAClD,oBAIE;IACF,iDAAwB;IAMxB,oBAMC;IAED;;OAEG;IACH,UAFU,qBAAqB,CAEb;IAGtB;;;;;;;OAOG;IACH,+BALW,MAAM,WACN,MAAM,EAAE,qBACR,WAAW,GACT,OAAO,CAAE,qBAAqB,CAAC,CA8B3C;IA0CD;;;;;;;OAOG;IACH,6BALW,MAAM,UACN,MAAM,EAAE,qBACR,WAAW,GACT,OAAO,CAAE,qBAAqB,CAAC,CAiC3C;CAyGJ"} \ No newline at end of file +{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../lib/Builder.js"],"names":[],"mappings":";uBAUa,OAAO,qBAAqB,EAAE,QAAQ;0BACtC,OAAO,qBAAqB,EAAE,WAAW;8BACzC,OAAO,qBAAqB,EAAE,eAAe;sBAC7C,OAAO,qBAAqB,EAAE,OAAO;+BACrC,OAAO,qBAAqB,EAAE,gBAAgB;mCAC9C,OAAO,qBAAqB,EAAE,oBAAoB;kCAClD,OAAO,qBAAqB,EAAE,mBAAmB;8BACjD,OAAO,qBAAqB,EAAE,eAAe;iCAC7C,OAAO,qBAAqB,EAAE,kBAAkB;oCAChD,OAAO,qBAAqB,EAAE,qBAAqB;gCACnD,OAAO,qBAAqB,EAAE,iBAAiB;0BAC/C,OAAO,qBAAqB,EAAE,WAAW;AAZtD;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH;IA4EI;;;;;;;;OAQG;IACH,mCANW,MAAM,gBACN,MAAM,UACN,MAAM,EAAE,aACR,MAAM,EAAE,GACN,OAAO,CAAE,qBAAqB,CAAC,CA+B3C;IA6CD;;;;;;;;OAQG;IACH,qCANW,MAAM,gBACN,MAAM,WACN,MAAM,EAAE,aACR,MAAM,EAAE,GACN,OAAO,CAAE,qBAAqB,CAAC,CAgC3C;IAED;;;;;;;OAOG;IACH,qCALW,MAAM,QACN,MAAM,WACN,MAAM,EAAE,GACN,OAAO,CAAE,MAAM,CAAC,CAuD5B;IApQD;;;;;;OAMG;IACH,wBAJW,OAAO,YAEP,QAAQ,EA4BlB;IAzBG,kDAA4B;IAC5B,oBAAkD;IAClD,oBAIE;IACF,iDAAwB;IAMxB,oBAMC;IAED;;OAEG;IACH,UAFU,qBAAqB,CAEb;IAGtB;;;;;;;OAOG;IACH,+BALW,MAAM,WACN,MAAM,EAAE,qBACR,WAAW,GACT,OAAO,CAAE,qBAAqB,CAAC,CAgC3C;IA0CD;;;;;;;OAOG;IACH,6BALW,MAAM,UACN,MAAM,EAAE,qBACR,WAAW,GACT,OAAO,CAAE,qBAAqB,CAAC,CAmC3C;CAyGJ"} \ No newline at end of file diff --git a/lib/Builder.js b/lib/Builder.js index 1f5fda1fb..2e4fc2fdc 100644 --- a/lib/Builder.js +++ b/lib/Builder.js @@ -72,26 +72,28 @@ saved async _buildDefinition(metadataType, nameArr, templateVariables) { const type = metadataType; try { - const result = await Promise.all( - nameArr.map((name) => { - // with npx and powershell spaces are not parsed correctly as part of a string - // we hence require users to put %20 in their stead and have to convert that back - name = name.split('%20').join(' '); + const result = ( + await Promise.all( + nameArr.map((name) => { + // with npx and powershell spaces are not parsed correctly as part of a string + // we hence require users to put %20 in their stead and have to convert that back + name = name.split('%20').join(' '); - MetadataTypeInfo[type].client = auth.getSDK(this.buObject); - MetadataTypeInfo[type].properties = this.properties; - MetadataTypeInfo[type].buObject = this.buObject; - return MetadataTypeInfo[type].buildDefinition( - this.templateDir, - this.targetDir, - name, - templateVariables - ); - }) - ); + MetadataTypeInfo[type].client = auth.getSDK(this.buObject); + MetadataTypeInfo[type].properties = this.properties; + MetadataTypeInfo[type].buObject = this.buObject; + return MetadataTypeInfo[type].buildDefinition( + this.templateDir, + this.targetDir, + name, + templateVariables + ); + }) + ) + ).filter(Boolean); if (result && type === result[0]?.type) { // result elements can be undefined for each key that we did not find - this.metadata[type] = result.filter(Boolean).map((element) => element.metadata); + this.metadata[type] = result.map((element) => element.metadata); } } catch (ex) { Util.logger.errorStack(ex, 'mcdev.buildDefinition'); @@ -151,28 +153,30 @@ saved const type = metadataType; try { /** @type {MetadataTypeItemObj[]} */ - const result = await Promise.all( - keyArr.map(async (key) => { - MetadataTypeInfo[type].properties = this.properties; - MetadataTypeInfo[type].buObject = this.buObject; + const result = ( + await Promise.all( + keyArr.map(async (key) => { + MetadataTypeInfo[type].properties = this.properties; + MetadataTypeInfo[type].buObject = this.buObject; - try { - /** @type {MetadataTypeItemObj} */ - const response = await MetadataTypeInfo[type].buildTemplate( - this.retrieveDir, - this.templateDir, - key, - templateVariables - ); - return response; - } catch (ex) { - Util.logger.errorStack(ex, ` ☇ skipping template asset: ${key}`); - } - }) - ); + try { + /** @type {MetadataTypeItemObj} */ + const response = await MetadataTypeInfo[type].buildTemplate( + this.retrieveDir, + this.templateDir, + key, + templateVariables + ); + return response; + } catch (ex) { + Util.logger.errorStack(ex, ` ☇ skipping template asset: ${key}`); + } + }) + ) + ).filter(Boolean); if (result && type === result[0]?.type) { // result elements can be undefined for each key that we did not find - this.metadata[type] = result.filter(Boolean).map((element) => element.metadata); + this.metadata[type] = result.map((element) => element.metadata); } } catch (ex) { Util.logger.errorStack(ex, 'mcdev.buildTemplate'); From 2c33581858b3c2df0fad1d6bacc5f1ff962860b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?= Date: Tue, 28 Jan 2025 17:34:00 +0100 Subject: [PATCH 5/5] #2013: adapt tests to now sorted return values --- test/type.asset.test.js | 6 +++--- test/type.journey.test.js | 8 ++++---- test/type.script.test.js | 2 +- test/type.triggeredSend.test.js | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/test/type.asset.test.js b/test/type.asset.test.js index 0aee2b723..5c39e9773 100644 --- a/test/type.asset.test.js +++ b/test/type.asset.test.js @@ -685,11 +685,11 @@ describe('type: asset', () => { assert.deepEqual( templatedItems.asset.map((item) => item.customerKey), [ - '{{{prefix}}}asset_templatebasedemail', - '{{{prefix}}}asset_template', '{{{prefix}}}asset_htmlblock', - '{{{prefix}}}htmlblock1', + '{{{prefix}}}asset_template', + '{{{prefix}}}asset_templatebasedemail', '{{{prefix}}}htmlblock 3 spaces', + '{{{prefix}}}htmlblock1', '{{{prefix}}}htmlblock2', ], 'expected specific assets to be templated' diff --git a/test/type.journey.test.js b/test/type.journey.test.js index 9e4e50a2c..45b7abbe2 100644 --- a/test/type.journey.test.js +++ b/test/type.journey.test.js @@ -418,7 +418,7 @@ describe('type: journey', () => { // journey assert.deepEqual( templatedItems.journey.map((item) => item.key), - ['{{{prefix}}}journey_Quicksend', '{{{prefix}}}journey_Multistep'], + ['{{{prefix}}}journey_Multistep', '{{{prefix}}}journey_Quicksend'], 'expected specific journeys to be templated' ); // event @@ -434,9 +434,9 @@ describe('type: journey', () => { assert.deepEqual( templatedItems.dataExtension.map((item) => item.CustomerKey), [ - '{{{prefix}}}journey_Quicksend', - '{{{prefix}}}journey_Multistep', '{{{prefix}}}DomainExclusion', + '{{{prefix}}}journey_Multistep', + '{{{prefix}}}journey_Quicksend', ], 'expected specific dataExtensions to be templated' ); @@ -457,8 +457,8 @@ describe('type: journey', () => { templatedItems.asset.map((item) => item.customerKey), [ '{{{prefix}}}asset_htmlblock', - '{{{prefix}}}htmlblock1', '{{{prefix}}}htmlblock 3 spaces', + '{{{prefix}}}htmlblock1', '{{{prefix}}}htmlblock2', ], 'expected specific assets to be templated' diff --git a/test/type.script.test.js b/test/type.script.test.js index d5720da39..523bd9207 100644 --- a/test/type.script.test.js +++ b/test/type.script.test.js @@ -402,9 +402,9 @@ describe('type: script', () => { assert.deepEqual( templatedItems.asset.map((item) => item.customerKey), [ - '{{{prefix}}}htmlblock1', '{{{prefix}}}asset_htmlblock', '{{{prefix}}}htmlblock 3 spaces', + '{{{prefix}}}htmlblock1', '{{{prefix}}}htmlblock2', ], 'expected specific assets to be templated' diff --git a/test/type.triggeredSend.test.js b/test/type.triggeredSend.test.js index b82a8dd1b..59238ff7d 100644 --- a/test/type.triggeredSend.test.js +++ b/test/type.triggeredSend.test.js @@ -172,8 +172,8 @@ describe('type: triggeredSend', () => { templatedItems.asset.map((item) => item.customerKey), [ '{{{prefix}}}asset_htmlblock', - '{{{prefix}}}htmlblock1', '{{{prefix}}}htmlblock 3 spaces', + '{{{prefix}}}htmlblock1', '{{{prefix}}}htmlblock2', ], 'expected specific assets to be templated'