mcdev 4.1.8 → 4.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,6 +39,8 @@ body:
39
39
  label: Version
40
40
  description: What version of our software are you running? (mcdev --version)
41
41
  options:
42
+ - 4.1.10
43
+ - 4.1.9
42
44
  - 4.1.8
43
45
  - 4.1.7
44
46
  - 4.1.6
package/README.md CHANGED
@@ -51,7 +51,7 @@ Accenture Salesforce Marketing Cloud DevTools (mcdev) is a rapid deployment/roll
51
51
  - [6.2.8. createDeltaPkg](#628-createdeltapkg)
52
52
  - [7. Advanced Configuration](#7-advanced-configuration)
53
53
  - [7.1. Config Options](#71-config-options)
54
- - [7.2. Metadata specific settings & options](#72-metadata-specific-settings--options)
54
+ - [7.2. Metadata-specific settings & options](#72-metadata-specific-settings--options)
55
55
  - [7.2.1. Retention Policy fields in Data Extensions](#721-retention-policy-fields-in-data-extensions)
56
56
  - [7.2.2. Adding/Updating Fields on existing Data Extensions](#722-addingupdating-fields-on-existing-data-extensions)
57
57
  - [7.2.3. Renaming fields of a Data Extensions](#723-renaming-fields-of-a-data-extensions)
@@ -123,7 +123,7 @@ If you experience issues installing Accenture SFMC DevTools, please check out th
123
123
  1. Install Accenture SFMC DevTools by running `npm install -g mcdev` (prefix with `sudo` on MacOS)
124
124
  - If you get an error, please see the below troubleshooting section.
125
125
 
126
- When completed run `mcdev --version` and it will show you which version you installed (e.g. `4.1.8`).
126
+ When completed run `mcdev --version` and it will show you which version you installed (e.g. `4.1.10`).
127
127
 
128
128
  > **_Side note for proud nerds_:**
129
129
  >
@@ -203,7 +203,7 @@ Click on `Install All` to quickly get things ready or review the recommendations
203
203
 
204
204
  ![Recommended extension prompt](img/README.md/vscode-recommendations-2.png)
205
205
 
206
- The "Workspace Recommendations" were defined by Accenture SFMC DevTools. Clicking on the little cloud icon will install all at once. The "Other Recommendations" are auto-generated by VS Code and are not controlled by Accenture SFMC DevTools. You _may_ look through those as well, but they might also be completely irrelevant for you.
206
+ The "Workspace Recommendations" were defined by Accenture SFMC DevTools. Clicking on the little cloud icon will install all at once. The "Other Recommendations" are auto-generated by VS Code and are not controlled by Accenture SFMC DevTools. You _may_ look through those as well, but they might also be completely irrelevant to you.
207
207
 
208
208
  **Node modules:**
209
209
 
@@ -277,10 +277,10 @@ _Note: Regardless of which tag or branch you install_
277
277
  **Install specific version (using a version tag on npm):**
278
278
 
279
279
  ```bash
280
- npm install -g mcdev@4.1.8
280
+ npm install -g mcdev@4.1.10
281
281
  ```
282
282
 
283
- **Warning**: When you used the above method to install Accenture SFMC DevTools for a specific version or tag, trying to [update Accenture SFMC DevTools](#updating-mcdev) might not download the most recently published official version but instead stay on the version or branch you previously selected (in the above examples: develop, 4.1.8)!
283
+ **Warning**: When you used the above method to install Accenture SFMC DevTools for a specific version or tag, trying to [update Accenture SFMC DevTools](#updating-mcdev) might not download the most recently published official version but instead stay on the version or branch you previously selected (in the above examples: develop, 4.1.10)!
284
284
 
285
285
  > **Note**: The version is currently _not_ updated on the developer branch until a new release is published. Hence, you will not see a change if you run `mcdev --version`.
286
286
 
@@ -288,7 +288,7 @@ npm install -g mcdev@4.1.8
288
288
 
289
289
  <a id="markdown-using-custom-clis" name="using-custom-clis"></a>
290
290
 
291
- Some users of Accenture SFMC DevTools prefer to use git bash or other CLIs instead of the operating system's default. Please note that some of the functionality of Accenture SFMC DevTools but also of other tools like the Node package manager (npm) do not necessarily function properly in these.
291
+ Some users of Accenture SFMC DevTools prefer to use git bash or other CLIs instead of the operating system's default. Please note that some of the functionality of Accenture SFMC DevTools but also other tools like the Node package manager (npm) do not necessarily function properly in these.
292
292
 
293
293
  If you encounter problems, we strongly recommend first trying it in the default CLI.
294
294
 
@@ -476,9 +476,20 @@ Example URL: `https://mcg123abcysykllg-0321cbs8bbt64.auth.marketingcloudapis.com
476
476
  > You can run this command without the interactive wizard asking questions using the `--skipInteraction` (or short`--yes`/`--y`) flag. In this case, you need to provide a few values in the command:
477
477
  >
478
478
  > ```bash
479
- > mcdev init --y.credentialName "yourCustomCredentialName" --y.client_id "yourClientIdHere" --y.client_secret "yourClientSecretHere" --y.auth_url "https://yourTenantSubdomainHere.auth.marketingcloudapis.com/" --y.gitRemoteUrl "https://my.git.server.com/myrepo.git" --y.account_id 00000000 --y.backupBUs "yes" --y.gitPush "yes"
479
+ > mcdev init --y.credentialName "yourCustomCredentialName" --y.client_id "yourClientIdHere" --y.client_secret "yourClientSecretHere" --y.auth_url "https://yourTenantSubdomainHere.auth.marketingcloudapis.com/" --y.gitRemoteUrl "https://my.git.server.com/myrepo.git" --y.account_id 00000000 --y.downloadBUs "true" --y.gitPush "true"
480
480
  > ```
481
481
 
482
+ | CLI Argument | Description |
483
+ | -------------------- | ---------------------------------------- |
484
+ | `--y.credentialName` | Credential name of your Business Unit |
485
+ | `--y.client_id` | Salesforce Marketing Cloud client ID |
486
+ | `--y.client_secret` | Salesforce Marketing Cloud client secret |
487
+ | `--y.auth_url` | Marketing cloud auth url |
488
+ | `--y.gitRemoteUrl` | URL of your git remote repo |
489
+ | `--y.account_id` | MID of the parent BU |
490
+ | `--y.downloadBUs` | Download all the BUs: `true` or `false` |
491
+ | `--y.gitPush` | Do the first git push: `true` or `false` |
492
+
482
493
  #### 6.1.2. upgrade
483
494
 
484
495
  <a id="markdown-upgrade" name="upgrade"></a>
@@ -859,7 +870,7 @@ _Alias:_ `mcdev bd`
859
870
  The `buildDefinition` command allows to prepare the deployments to one or multiple targets based on templates and [Market Configuration](#market-configuration).
860
871
  After you have created your templates via `retrieveAsTemplate` (or manually) in your `template/dataExtension/` folder run this command to create the final deployable files in your respective `retrieve/<business unit>/` folder.
861
872
 
862
- This allows you to double-check if you actually changed something by comparing the before and after using your favorite Git client. You then have to manually copy the files you want to deploy into the respective `deploy/` folder.
873
+ This allows you to double-check if you changed something by comparing the before and after using your favorite Git client. You then have to manually copy the files you want to deploy into the respective `deploy/` folder.
863
874
 
864
875
  > **Note**: Before using this command, you need to configure your markets first! Check out our guide on [Market Configuration](#market-configuration) to understand how to use templating and prepare your market config.
865
876
 
@@ -1119,7 +1130,7 @@ The central config in `.mcdevrc.json` holds multiple adjustable settings:
1119
1130
  | metaDataTypes.documentOnRetrieve | ['role','dataExtension'] | automatically executes `document` for selected types |
1120
1131
  | metaDataTypes.retrieve | _changes with each release_ | check [Metadata Type Support](#metadata-type-support) for current list |
1121
1132
 
1122
- ### 7.2. Metadata specific settings & options
1133
+ ### 7.2. Metadata-specific settings & options
1123
1134
 
1124
1135
  <a id="markdown-metadata-specific-settings" name="metadata-specific-settings"></a>
1125
1136
 
@@ -1130,7 +1141,7 @@ The way the retention policy is saved is a bit misleading and hence we wanted to
1130
1141
  | Field | Description | Values |
1131
1142
  | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------ |
1132
1143
  | **DataRetentionPeriod** | this field should print the value of the unit of measure but it unfortunately is off by one (e.g. showing "weeks" instead of "months"). Also, it seems to have no impact on what's stored.<br> We therefore excluded it from retrieve/deploy | - |
1133
- | **DataRetentionPeriodUnitOfMeasure** | represents drop down for "period after" selection | 6: years<br>5: months<br>4: weeks<br>2: days |
1144
+ | **DataRetentionPeriodUnitOfMeasure** | represents drop-down for "period after" selection | 6: years<br>5: months<br>4: weeks<br>2: days |
1134
1145
  | **DataRetentionPeriodLength** | represents number field for "period after" selection | min: 1<br>max: 999 |
1135
1146
  | **RowBasedRetention** | only true if "delete individual records" is selected, otherwise false | true / false |
1136
1147
  | **ResetRetentionPeriodOnImport** | true if "Reset period on import" is checked. | This option is always false if "delete individual records" is selected | true / false |
@@ -1158,7 +1169,7 @@ There are a few rules to keep in mind when playing with Data Extensions fields:
1158
1169
 
1159
1170
  #### 7.2.3. Renaming fields of a Data Extensions
1160
1171
 
1161
- With a small addition to the Data Extension's JSON it is possible to rename fields via MC DevTools. Imagine the following Data Extension:
1172
+ With a small addition to the Data Extension's JSON, it is possible to rename fields via MC DevTools. Imagine the following Data Extension:
1162
1173
 
1163
1174
  ```json
1164
1175
  {
@@ -1273,7 +1284,7 @@ Here is a simple example with one DEV BU, 1 QA BU and 2 PROD BUs:
1273
1284
  }
1274
1285
  ```
1275
1286
 
1276
- Way more complex example with dedicated "Parent" BUs per environment (DEV, QA, PROD) and multiple country-specific BUs for QA and for PROD:
1287
+ Way more complex example with dedicated "Parent" BUs per environment (DEV, QA, PROD) and multiple country-specific BUs for QA and PROD:
1277
1288
 
1278
1289
  ```json
1279
1290
  // example market config in your .mcdevrc.json
@@ -1494,7 +1505,7 @@ Assuming you cloned Accenture SFMC DevTools into `C:\repos\sfmc-devtools\` (or `
1494
1505
 
1495
1506
  This should tell npm to create a symlink to your cloned local directory, allowing you to see updates you make in your mcdev repo instantly.
1496
1507
 
1497
- To test your new **global** developer setup, run `mcdev --version` in CLI which should return the current version (e.g. `4.1.8`). Then, go into your mcdev repo and update the version with the suffix `-dev`, e.g. to `4.1.8-dev` and then run `mcdev --version` again to verify that your change propagates instantly.
1508
+ To test your new **global** developer setup, run `mcdev --version` in CLI which should return the current version (e.g. `4.1.10`). Then, go into your mcdev repo and update the version with the suffix `-dev`, e.g. to `4.1.10-dev` and then run `mcdev --version` again to verify that your change propagates instantly.
1498
1509
 
1499
1510
  > **Not recommended:** Alternatively, you can install it locally only by opening a terminal in your project directory and executing `npm install --save-dev "C:\repos\sfmc-devtools"`
1500
1511
  > To run the local version you need to prepend "npx" before your commands, e.g. `npx mcdev --version`
@@ -1532,7 +1543,7 @@ The following explains how you _could_ install it locally for certain edge cases
1532
1543
  4. Afterwards, install Accenture SFMC DevTools by running `npm install --save-dev mcdev`
1533
1544
  - If you get an error, please see the below troubleshooting section.
1534
1545
 
1535
- When completed run `mcdev --version` and it will show you which version you installed (e.g. `4.1.8`).
1546
+ When completed run `mcdev --version` and it will show you which version you installed (e.g. `4.1.10`).
1536
1547
 
1537
1548
  ### 9.3. NPM Scripts
1538
1549
 
@@ -1,9 +1,9 @@
1
1
  *.DS_Store
2
- deploy/
3
- docs/badKeys/
4
- docs/deltaPackage/
5
- logs/
6
2
  node_modules/
7
- template/
3
+ /deploy/
4
+ /docs/badKeys/
5
+ /docs/deltaPackage/
6
+ /logs/
7
+ /template/
8
8
  **/QueryStudioResults at*
9
9
  .mcdev-auth.json
@@ -4440,6 +4440,7 @@ Retrieves metadata from a business unit and saves it to the local filesystem.
4440
4440
  * [Retriever](#Retriever)
4441
4441
  * [new Retriever(properties, buObject)](#new_Retriever_new)
4442
4442
  * [.retrieve(metadataTypes, [namesOrKeys], [templateVariables], [changelogOnly])](#Retriever+retrieve) ⇒ <code>Promise.&lt;TYPE.MultiMetadataTypeList&gt;</code>
4443
+ * [._getTypeDependencies(metadataTypes)](#Retriever+_getTypeDependencies) ⇒ <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code>
4443
4444
 
4444
4445
  <a name="new_Retriever_new"></a>
4445
4446
 
@@ -4467,6 +4468,18 @@ Retrieve metadata of specified types into local file system and Retriever.metada
4467
4468
  | [templateVariables] | <code>TYPE.TemplateMap</code> | Object of values which can be replaced (in case of templating) |
4468
4469
  | [changelogOnly] | <code>boolean</code> | skip saving, only create json in memory |
4469
4470
 
4471
+ <a name="Retriever+_getTypeDependencies"></a>
4472
+
4473
+ ### retriever.\_getTypeDependencies(metadataTypes) ⇒ <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code>
4474
+ helper for [retrieve](retrieve) to get all dependencies of the given types
4475
+
4476
+ **Kind**: instance method of [<code>Retriever</code>](#Retriever)
4477
+ **Returns**: <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code> - unique list dependent metadata types
4478
+
4479
+ | Param | Type | Description |
4480
+ | --- | --- | --- |
4481
+ | metadataTypes | <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code> | list of metadata types to retrieve; can include subtypes! |
4482
+
4470
4483
  <a name="Util"></a>
4471
4484
 
4472
4485
  ## Util
package/lib/Retriever.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  const TYPE = require('../types/mcdev.d');
4
4
  const MetadataTypeInfo = require('./MetadataTypeInfo');
5
+ const MetadataDefinitions = require('./MetadataTypeDefinitions');
5
6
  const Util = require('./util/util');
6
7
  const File = require('./util/file');
7
8
  const cache = require('./util/cache');
@@ -63,6 +64,9 @@ class Retriever {
63
64
  reset: '\x1B[0m',
64
65
  dim: '\x1B[2m',
65
66
  };
67
+ // ensure we know which real dependencies we have to ensure we cache those completely
68
+ const dependencies = this._getTypeDependencies(metadataTypes);
69
+
66
70
  for (const metadataType of Util.getMetadataHierachy(metadataTypes)) {
67
71
  const [type, subType] = metadataType.split('-');
68
72
  // if types were added by getMetadataHierachy() for caching, make sure the key-list is set to [null] for them which will retrieve all
@@ -94,6 +98,18 @@ class Retriever {
94
98
  )
95
99
  );
96
100
  } else {
101
+ let cacheResult = null;
102
+ if (
103
+ Object.keys(typeKeyMap[metadataType])[0] !== null &&
104
+ (dependencies.includes(type) || dependencies.includes(metadataType))
105
+ ) {
106
+ // if we have a key-list and the type is a dependency, we need to cache the whole type
107
+ Util.logger.info(`Caching dependent Metadata: ${metadataType}`);
108
+ cacheResult = await MetadataTypeInfo[type].retrieveForCache(
109
+ this.buObject,
110
+ subType
111
+ );
112
+ }
97
113
  Util.logger.info(
98
114
  `Retrieving: ${metadataType}` +
99
115
  (typeKeyMap[metadataType][0] !== null
@@ -115,6 +131,10 @@ class Retriever {
115
131
  )
116
132
  )
117
133
  ));
134
+ if (Array.isArray(result) && cacheResult !== null) {
135
+ // if we have a key-list and the type is a dependency, we need to cache the whole type
136
+ result = [cacheResult, ...result];
137
+ }
118
138
  if (changelogOnly) {
119
139
  // add folder to changelog
120
140
  for (const key of Object.keys(result.metadata)) {
@@ -124,10 +144,11 @@ class Retriever {
124
144
  }
125
145
  if (result) {
126
146
  if (Array.isArray(result)) {
127
- cache.setMetadata(
128
- type,
129
- result.filter((el) => !!el).map((element) => element.metadata)[0]
130
- );
147
+ for (const result_i of result) {
148
+ if (result_i?.metadata && Object.keys(result_i.metadata).length) {
149
+ cache.mergeMetadata(type, result_i.metadata);
150
+ }
151
+ }
131
152
  if (metadataTypes.includes(type) || metadataTypes.includes(metadataType)) {
132
153
  retrieveChangelog[type] = result
133
154
  .filter((el) => !!el)
@@ -148,6 +169,27 @@ class Retriever {
148
169
  }
149
170
  return retrieveChangelog;
150
171
  }
172
+
173
+ /**
174
+ * helper for {@link retrieve} to get all dependencies of the given types
175
+ *
176
+ * @param {TYPE.SupportedMetadataTypes[]} metadataTypes list of metadata types to retrieve; can include subtypes!
177
+ * @returns {TYPE.SupportedMetadataTypes[]} unique list dependent metadata types
178
+ */
179
+ _getTypeDependencies(metadataTypes) {
180
+ let dependencies = [];
181
+ for (const metadataType of metadataTypes) {
182
+ const type = metadataType.split('-')[0];
183
+ // if they have dependencies then add a dependency pair for each type
184
+ if (MetadataDefinitions[type].dependencies.length > 0) {
185
+ dependencies.push(
186
+ ...MetadataDefinitions[type].dependencies.map((dep) => dep.split('-')[0])
187
+ );
188
+ }
189
+ }
190
+ dependencies = [...new Set(dependencies)];
191
+ return dependencies;
192
+ }
151
193
  }
152
194
 
153
195
  module.exports = Retriever;
@@ -770,6 +770,11 @@ class MetadataType {
770
770
  }
771
771
 
772
772
  if (retrieveDir) {
773
+ // defined colors for optionally printing the keys we filtered by
774
+ const color = {
775
+ reset: '\x1B[0m',
776
+ dim: '\x1B[2m',
777
+ };
773
778
  const savedMetadata = await this.saveResults(
774
779
  results,
775
780
  retrieveDir,
@@ -779,7 +784,10 @@ class MetadataType {
779
784
  Util.logger.info(
780
785
  `Downloaded: ${overrideType || this.definition.type} (${
781
786
  Object.keys(savedMetadata).length
782
- })`
787
+ })` +
788
+ (singleRetrieve !== null
789
+ ? ` ${color.dim}(Key: ${singleRetrieve})${color.reset}`
790
+ : '')
783
791
  );
784
792
  }
785
793
 
@@ -800,7 +808,6 @@ class MetadataType {
800
808
  const bodyIteratorField = this.definition.bodyIteratorField;
801
809
  const keyField = this.definition.keyField;
802
810
  const metadataStructure = {};
803
-
804
811
  if (body !== null) {
805
812
  if (Array.isArray(body)) {
806
813
  // in some cases data is just an array
@@ -816,7 +823,6 @@ class MetadataType {
816
823
  } else if (singleRetrieve) {
817
824
  // some types will return a single item intead of an array if the key is supported by their api
818
825
  metadataStructure[singleRetrieve] = body;
819
-
820
826
  return metadataStructure;
821
827
  }
822
828
  if (
@@ -827,6 +833,8 @@ class MetadataType {
827
833
  const single = {};
828
834
  single[singleRetrieve] = metadataStructure[singleRetrieve];
829
835
  return single;
836
+ } else if (singleRetrieve) {
837
+ return {};
830
838
  }
831
839
  }
832
840
  return metadataStructure;
@@ -460,7 +460,7 @@ module.exports = {
460
460
  ],
461
461
  binarySubtypes: ['archive', 'audio', 'document', 'image', 'rawimage', 'video'],
462
462
  extendedSubTypes: {
463
- asset: ['webpage', 'webtemplate', 'jsonmessage', 'icemailformblock'],
463
+ asset: ['webpage', 'webtemplate', 'jsonmessage', 'icemailformblock', 'asset'],
464
464
  image: [
465
465
  'ai',
466
466
  'psd',
@@ -486,6 +486,7 @@ module.exports = {
486
486
  'pbm',
487
487
  'ppm',
488
488
  'svg',
489
+ 'image',
489
490
  ],
490
491
  rawimage: [
491
492
  '3fr',
@@ -523,6 +524,7 @@ module.exports = {
523
524
  'sr2',
524
525
  'srw',
525
526
  'x3f',
527
+ 'rawimage',
526
528
  ],
527
529
  video: [
528
530
  '3gp',
@@ -551,6 +553,7 @@ module.exports = {
551
553
  'wmv',
552
554
  'rm',
553
555
  'ogv',
556
+ 'video',
554
557
  ],
555
558
  document: [
556
559
  'indd',
@@ -596,6 +599,7 @@ module.exports = {
596
599
  'key',
597
600
  'keynote',
598
601
  'pez',
602
+ 'document',
599
603
  ],
600
604
  audio: [
601
605
  'aac',
@@ -613,6 +617,7 @@ module.exports = {
613
617
  'ra',
614
618
  'vox',
615
619
  'voc',
620
+ 'audio',
616
621
  ],
617
622
  archive: [
618
623
  '7z',
@@ -630,6 +635,7 @@ module.exports = {
630
635
  'tar',
631
636
  'zip',
632
637
  'gpg',
638
+ 'archive',
633
639
  ],
634
640
  code: [
635
641
  'htm',
@@ -651,8 +657,9 @@ module.exports = {
651
657
  'as',
652
658
  'fla',
653
659
  'eml',
660
+ 'code',
654
661
  ],
655
- textfile: ['text', 'txt'],
662
+ textfile: ['text', 'txt', 'textfile'],
656
663
  block: [
657
664
  'freeformblock',
658
665
  'textblock',
@@ -667,9 +674,10 @@ module.exports = {
667
674
  'socialfollowblock',
668
675
  'buttonblock',
669
676
  'layoutblock',
677
+ 'block',
670
678
  ],
671
- message: ['templatebasedemail', 'htmlemail', 'textonlyemail'],
672
- template: ['defaulttemplate'],
679
+ template: ['defaulttemplate', 'template'],
680
+ message: ['templatebasedemail', 'htmlemail', 'textonlyemail', 'message'],
673
681
  other: [
674
682
  'smartcaptureblock',
675
683
  'smartcaptureformfieldblock',
@@ -688,6 +696,21 @@ module.exports = {
688
696
  ],
689
697
  },
690
698
  typeMapping: {
699
+ asset: 1,
700
+ file: 2, // not inherited on Asset Types
701
+ block: 3,
702
+ template: 4,
703
+ message: 5,
704
+ custom: 6, // not inherited on Asset Types
705
+ default: 7, // not inherited on Asset Types
706
+ image: 8,
707
+ rawimage: 9,
708
+ video: 10,
709
+ document: 11,
710
+ audio: 12,
711
+ archive: 13,
712
+ code: 14,
713
+ textfile: 15,
691
714
  ai: 16,
692
715
  psd: 17,
693
716
  pdd: 18,
@@ -110,7 +110,7 @@ const Init = {
110
110
  },
111
111
  ]);
112
112
  }
113
- if (skipInteraction.gitPush === 'yes' || responses.gitPush) {
113
+ if (skipInteraction.gitPush === 'true' || responses?.gitPush) {
114
114
  Util.execSync('git', ['push', '-u', 'origin', 'master']);
115
115
  }
116
116
  } else if (remoteBranchesExist === true) {
package/lib/util/init.js CHANGED
@@ -202,7 +202,7 @@ const Init = {
202
202
  },
203
203
  ]);
204
204
  }
205
- if (skipInteraction.backupBUs === 'yes' || responses.initialRetrieveAll) {
205
+ if (skipInteraction.downloadBUs === 'true' || responses?.initialRetrieveAll) {
206
206
  Util.execSync('mcdev', ['retrieve', bu]);
207
207
 
208
208
  if (gitStatus === 'init') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcdev",
3
- "version": "4.1.8",
3
+ "version": "4.1.10",
4
4
  "description": "Accenture Salesforce Marketing Cloud DevTools",
5
5
  "author": "Accenture: joern.berkefeld, douglas.midgley, robert.zimmermann, maciej.barnas",
6
6
  "license": "MIT",
@@ -63,5 +63,5 @@
63
63
  "triggeredSendDefinition"
64
64
  ]
65
65
  },
66
- "version": "4.1.8"
66
+ "version": "4.1.10"
67
67
  }