Skip to content

Commit

Permalink
Merge pull request #1023 from Accenture/develop
Browse files Browse the repository at this point in the history
Release 5.2
  • Loading branch information
JoernBerkefeld committed Aug 8, 2023
2 parents a71fea3 + 055d132 commit 50d3a7c
Show file tree
Hide file tree
Showing 192 changed files with 30,645 additions and 1,272 deletions.
8 changes: 4 additions & 4 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
{
"env": {
"es6": true,
"node": true,
"mocha": true
"node": true
},
"extends": [
"eslint:recommended",
Expand Down Expand Up @@ -67,7 +66,6 @@
"unicorn/prefer-set-has": "off",
"unicorn/prefer-spread": "off",
"unicorn/prefer-string-replace-all": "error",
"unicorn/unicorn/no-lonely-if": "off",
"arrow-body-style": ["error", "as-needed"],
"curly": "error",
"no-console": "error",
Expand All @@ -84,6 +82,7 @@
}
}
],
"jsdoc/require-param-type": "error",
"jsdoc/tag-lines": ["warn", "any", { "startLines": 1 }],
"spaced-comment": ["warn", "always", { "block": { "exceptions": ["*"], "balanced": true } }]
},
Expand All @@ -103,7 +102,8 @@
"extends": ["plugin:mocha/recommended"],
"plugins": ["mocha"],
"rules": {
"mocha/no-mocha-arrows": "off"
"mocha/no-mocha-arrows": "off",
"mocha/no-pending-tests": "off"
}
}
]
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ body:
label: Version
description: What version of our software are you running? (mcdev --version)
options:
- 5.2.0
- 5.1.0
- 5.0.2
- 5.0.1
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/coverage-develop-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ jobs:

- run: npm ci --ignore-scripts

- run: npm run lint

- name: Run mcdev-tests with coverage
run: npm run coverage

Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/coverage-main-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ jobs:

- run: npm ci --ignore-scripts

- run: npm run lint

- name: Run mcdev-tests with coverage
run: npm run coverage

Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ jobs:

- run: npm ci --ignore-scripts

- run: npm run lint

- name: Run mcdev-tests with coverage
run: npm run coverage

Expand Down
1 change: 1 addition & 0 deletions .husky/post-checkout
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ if [[ ${PACKAGES[@]} ]]; then
done
echo "📦 Running npm install to update your dependencies..."
npm install
npm run lint:fix
else
echo "📦 All packages up-to-date. No need to run npm install."
fi
1 change: 1 addition & 0 deletions .husky/post-merge
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ if [[ ${PACKAGES[@]} ]]; then
done
echo "📦 Running npm install to update your dependencies..."
npm install
npm run lint:fix
else
echo "📦 All packages up-to-date. No need to run npm install."
fi
4 changes: 4 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
"editorconfig.editorconfig",
"esbenp.prettier-vscode",

// mcdev tests
"hbenl.vscode-mocha-test-adapter",
"IBM.output-colorizer",

// Markdown / Readme.md
"joernberkefeld.markdown-preview-bitbucket-innersource"
]
Expand Down
919 changes: 633 additions & 286 deletions docs/dist/documentation.md

Large diffs are not rendered by default.

50 changes: 25 additions & 25 deletions lib/Deployer.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,17 @@ class Deployer {
* @param {string} businessUnit references credentials from properties.json
* @param {TYPE.SupportedMetadataTypes[]} [selectedTypesArr] limit deployment to given metadata type
* @param {string[]} [keyArr] limit deployment to given metadata keys
* @param {boolean} [fromRetrieve] optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder
* @returns {Promise.<Object.<string,TYPE.MultiMetadataTypeMap>>} deployed metadata per BU (first key: bu name, second key: metadata type)
*/
static async deploy(businessUnit, selectedTypesArr, keyArr, fromRetrieve) {
static async deploy(businessUnit, selectedTypesArr, keyArr) {
Util.logger.info('mcdev:: Deploy');
const buMultiMetadataTypeMap = {};
const properties = await config.getProperties();
if (!(await config.checkProperties(properties))) {
return null;
}
if (fromRetrieve) {
const deployDirBak = properties.directories.deploy;
if (Util.OPTIONS.fromRetrieve) {
properties.directories.deploy = properties.directories.retrieve;
}
if (Array.isArray(selectedTypesArr)) {
Expand All @@ -66,7 +66,7 @@ class Deployer {
}
}
if (
fromRetrieve &&
Util.OPTIONS.fromRetrieve &&
(!selectedTypesArr ||
!Array.isArray(selectedTypesArr) ||
!selectedTypesArr.length ||
Expand Down Expand Up @@ -97,8 +97,7 @@ class Deployer {
bu,
properties,
selectedTypesArr,
keyArr,
fromRetrieve
keyArr
);
buMultiMetadataTypeMap[cred + '/' + bu] = multiMetadataTypeMap;
counter_credBu++;
Expand Down Expand Up @@ -137,7 +136,7 @@ class Deployer {
return;
}
// valid credential given and -all- BUs targeted
Util.logger.info(`\n :: Deploying all BUs for ${cred}`);
Util.logger.info(`:: Deploying all BUs for ${cred}`);
let counter_credBu = 0;
// for (const bu in properties.credentials[cred].businessUnits) {
const deployFolders = await File.readDirectories(
Expand All @@ -151,46 +150,46 @@ class Deployer {
buPath,
properties,
selectedTypesArr,
keyArr,
fromRetrieve
keyArr
);
buMultiMetadataTypeMap[cred + '/' + buPath] = multiMetadataTypeMap;
counter_credBu++;
Util.logger.info('');
Util.startLogger(true);
}
Util.logger.info(`\n :: ${counter_credBu} BUs for ${cred}\n`);
Util.logger.info(` :: ${counter_credBu} BUs for ${cred}\n`);
} else {
// either bad credential or specific BU or no BU given
const multiMetadataTypeMap = await this._deployBU(
cred,
bu,
properties,
selectedTypesArr,
keyArr,
fromRetrieve
keyArr
);
counter_credBu++;
buMultiMetadataTypeMap[cred + '/' + bu] = multiMetadataTypeMap;
}
}
if (Util.OPTIONS.fromRetrieve) {
properties.directories.deploy = deployDirBak;
}
if (counter_credBu !== 0) {
Util.logger.info(`\n :: Deployed ${counter_credBu} BUs\n`);
Util.logger.info(`:: Deployed ${counter_credBu} BUs\n`);
}
return buMultiMetadataTypeMap;
}
/**
* helper for {@link deploy}
* helper for {@link Deployer.deploy}
*
* @param {string} cred name of Credential
* @param {string} bu name of BU
* @param {TYPE.Mcdevrc} properties General configuration to be used in retrieve
* @param {TYPE.SupportedMetadataTypes[]} [typeArr] limit deployment to given metadata type
* @param {string[]} [keyArr] limit deployment to given metadata keys
* @param {boolean} [fromRetrieve] optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder
* @returns {Promise.<TYPE.MultiMetadataTypeMap>} ensure that BUs are worked on sequentially
*/
static async _deployBU(cred, bu, properties, typeArr, keyArr, fromRetrieve) {
static async _deployBU(cred, bu, properties, typeArr, keyArr) {
const buPath = `${cred}/${bu}`;
Util.logger.info(`:: Deploying to ${buPath}`);
const buObject = await Cli.getCredentialObject(properties, buPath, null, true);
Expand All @@ -201,7 +200,7 @@ class Deployer {
const deployer = new Deployer(properties, buObject);
try {
// await is required or the calls end up conflicting
multiMetadataTypeMap = await deployer._deploy(typeArr, keyArr, fromRetrieve);
multiMetadataTypeMap = await deployer._deploy(typeArr, keyArr);
} catch (ex) {
Util.logger.errorStack(ex, 'mcdev.deploy failed');
}
Expand All @@ -214,11 +213,9 @@ class Deployer {
*
* @param {TYPE.SupportedMetadataTypes[]} [typeArr] limit deployment to given metadata type (can include subtype)
* @param {string[]} [keyArr] limit deployment to given metadata keys
* @param {boolean} [fromRetrieve] if true, no folders will be updated/created
* @param {boolean} [isRefresh] optional flag to indicate that triggeredSend should be refreshed after deployment of assets
* @returns {Promise.<TYPE.MultiMetadataTypeMap>} Promise of all deployed metadata
*/
async _deploy(typeArr, keyArr, fromRetrieve, isRefresh) {
async _deploy(typeArr, keyArr) {
if (await File.pathExists(this.deployDir)) {
/** @type {TYPE.MultiMetadataTypeMap} */
this.metadata = Deployer.readBUMetadata(this.deployDir, typeArr);
Expand Down Expand Up @@ -252,7 +249,7 @@ class Deployer {
}
}

if (!fromRetrieve) {
if (!Util.OPTIONS.fromRetrieve) {
await Deployer.createFolderDefinitions(
this.deployDir,
this.metadata,
Expand Down Expand Up @@ -292,13 +289,16 @@ class Deployer {
// TODO rewrite to allow deploying only a specific sub-type; currently, subtypes are ignored when executing deploy
const type = metadataType;
if (this.metadata[type]) {
Util.logger.info('Deploying: ' + metadataType);
Util.logger.info(
'Deploying: ' +
metadataType +
(Util.OPTIONS.fromRetrieve ? ' (from retrieve folder)' : '')
);

const result = await MetadataTypeInfo[type].deploy(
this.metadata[type],
this.deployDir,
this.retrieveDir,
isRefresh
this.retrieveDir
);
multiMetadataTypeMap[type] = result;
cache.mergeMetadata(type, result);
Expand All @@ -312,7 +312,7 @@ class Deployer {
*
* @param {string} deployDir root directory of metadata.
* @param {string[]} [typeArr] limit deployment to given metadata type
* @param {boolean} [listBadKeys=false] do not print errors, used for badKeys()
* @param {boolean} [listBadKeys] do not print errors, used for badKeys()
* @returns {TYPE.MultiMetadataTypeMap} Metadata of BU in local directory
*/
static readBUMetadata(deployDir, typeArr, listBadKeys) {
Expand Down
2 changes: 1 addition & 1 deletion lib/MetadataTypeDefinitions.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
const MetadataTypeDefinitions = {
asset: require('./metadataTypes/definitions/Asset.definition'),
attributeGroup: require('./metadataTypes/definitions/AttributeGroup.definition'),
attributeSet: require('./metadataTypes/definitions/AttributeSet.definition'),
automation: require('./metadataTypes/definitions/Automation.definition'),
campaign: require('./metadataTypes/definitions/Campaign.definition'),
contentArea: require('./metadataTypes/definitions/ContentArea.definition'),
Expand All @@ -32,7 +33,6 @@ const MetadataTypeDefinitions = {
role: require('./metadataTypes/definitions/Role.definition'),
script: require('./metadataTypes/definitions/Script.definition'),
sendClassification: require('./metadataTypes/definitions/SendClassification.definition'),
setDefinition: require('./metadataTypes/definitions/SetDefinition.definition'),
transactionalEmail: require('./metadataTypes/definitions/TransactionalEmail.definition'),
transactionalPush: require('./metadataTypes/definitions/TransactionalPush.definition'),
transactionalSMS: require('./metadataTypes/definitions/TransactionalSMS.definition'),
Expand Down
2 changes: 1 addition & 1 deletion lib/MetadataTypeInfo.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
const MetadataTypeInfo = {
asset: require('./metadataTypes/Asset'),
attributeGroup: require('./metadataTypes/AttributeGroup'),
attributeSet: require('./metadataTypes/AttributeSet'),
automation: require('./metadataTypes/Automation'),
campaign: require('./metadataTypes/Campaign'),
contentArea: require('./metadataTypes/ContentArea'),
Expand All @@ -32,7 +33,6 @@ const MetadataTypeInfo = {
role: require('./metadataTypes/Role'),
script: require('./metadataTypes/Script'),
sendClassification: require('./metadataTypes/SendClassification'),
setDefinition: require('./metadataTypes/SetDefinition'),
transactionalEmail: require('./metadataTypes/TransactionalEmail'),
transactionalPush: require('./metadataTypes/TransactionalPush'),
transactionalSMS: require('./metadataTypes/TransactionalSMS'),
Expand Down
2 changes: 1 addition & 1 deletion lib/Retriever.js
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ class Retriever {
}

/**
* helper for {@link retrieve} to get all dependencies of the given types
* helper for {@link Retriever.retrieve} to get all dependencies of the given types
*
* @param {TYPE.SupportedMetadataTypes[]} metadataTypes list of metadata types to retrieve; can include subtypes!
* @returns {TYPE.SupportedMetadataTypes[]} unique list dependent metadata types
Expand Down
Loading

0 comments on commit 50d3a7c

Please sign in to comment.