mcdev 5.1.0 → 5.3.0
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.
- package/.eslintrc.json +4 -4
- package/.fork/custom-commands.json +12 -0
- package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +19 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +2 -2
- package/.github/workflows/coverage-develop-branch.yml +0 -2
- package/.github/workflows/coverage-main-branch.yml +0 -2
- package/.github/workflows/coverage.yml +0 -2
- package/.husky/post-checkout +1 -0
- package/.husky/post-merge +1 -0
- package/.vscode/extensions.json +4 -0
- package/docs/dist/documentation.md +1034 -296
- package/lib/Deployer.js +25 -25
- package/lib/MetadataTypeDefinitions.js +2 -1
- package/lib/MetadataTypeInfo.js +2 -1
- package/lib/Retriever.js +1 -1
- package/lib/cli.js +165 -10
- package/lib/index.js +398 -95
- package/lib/metadataTypes/Asset.js +10 -11
- package/lib/metadataTypes/AttributeGroup.js +76 -2
- package/lib/metadataTypes/AttributeSet.js +367 -0
- package/lib/metadataTypes/Automation.js +483 -137
- package/lib/metadataTypes/DataExtension.js +465 -68
- package/lib/metadataTypes/DataExtensionField.js +31 -14
- package/lib/metadataTypes/Event.js +2 -3
- package/lib/metadataTypes/Folder.js +1 -1
- package/lib/metadataTypes/Journey.js +13 -7
- package/lib/metadataTypes/MetadataType.js +212 -54
- package/lib/metadataTypes/MobileKeyword.js +9 -9
- package/lib/metadataTypes/MobileMessage.js +5 -5
- package/lib/metadataTypes/Query.js +26 -10
- package/lib/metadataTypes/Script.js +3 -3
- package/lib/metadataTypes/TransactionalEmail.js +94 -17
- package/lib/metadataTypes/TransactionalMessage.js +3 -2
- package/lib/metadataTypes/TransactionalSMS.js +5 -5
- package/lib/metadataTypes/TriggeredSend.js +25 -50
- package/lib/metadataTypes/User.js +7 -4
- package/lib/metadataTypes/Verification.js +230 -0
- package/lib/metadataTypes/definitions/AttributeGroup.definition.js +119 -108
- package/lib/metadataTypes/definitions/{SetDefinition.definition.js → AttributeSet.definition.js} +123 -43
- package/lib/metadataTypes/definitions/Automation.definition.js +23 -15
- package/lib/metadataTypes/definitions/ImportFile.definition.js +36 -6
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +19 -1
- package/lib/metadataTypes/definitions/TriggeredSend.definition.js +1 -0
- package/lib/metadataTypes/definitions/Verification.definition.js +88 -0
- package/lib/util/cache.js +9 -4
- package/lib/util/cli.js +40 -0
- package/lib/util/file.js +2 -2
- package/lib/util/init.js +84 -0
- package/lib/util/util.js +121 -13
- package/package.json +13 -13
- package/test/mockRoot/.mcdevrc.json +1 -1
- package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testExisting_dataExtensionShared.dataExtension-meta.json +59 -0
- package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testNew_dataExtensionShared.dataExtension-meta.json +23 -0
- package/test/mockRoot/deploy/testInstance/testBU/automation/testExisting_automation.automation-meta.json +1 -2
- package/test/mockRoot/deploy/testInstance/testBU/automation/testNew_automation.automation-meta.json +9 -6
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testExisting_dataExtension.dataExtension-meta.json +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/dataExtract/testExisting_dataExtract.dataExtract-meta.json +35 -0
- package/test/mockRoot/deploy/testInstance/testBU/dataExtract/testNew_dataExtract.dataExtract-meta.json +35 -0
- package/test/mockRoot/deploy/testInstance/testBU/fileTransfer/testExisting_fileTransfer.fileTransfer-meta.json +17 -0
- package/test/mockRoot/deploy/testInstance/testBU/fileTransfer/testNew_fileTransfer.fileTransfer-meta.json +17 -0
- package/test/mockRoot/deploy/testInstance/testBU/importFile/testExisting_importFile.importFile-meta.json +29 -0
- package/test/mockRoot/deploy/testInstance/testBU/importFile/testNew_importFile.importFile-meta.json +29 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query_fixKeys.query-meta.json +11 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query_fixKeys.query-meta.sql +6 -0
- package/test/mockRoot/deploy/testInstance/testBU/script/testExisting_script.script-meta.json +6 -0
- package/test/mockRoot/deploy/testInstance/testBU/script/testExisting_script.script-meta.ssjs +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/script/testNew_script.script-meta.json +6 -0
- package/test/mockRoot/deploy/testInstance/testBU/script/testNew_script.script-meta.ssjs +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +3 -4
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +1 -6
- package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testExisting_triggeredSend.triggeredSend-meta.json +29 -0
- package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testNew_triggeredSend.triggeredSend-meta.json +29 -0
- package/test/mockRoot/deploy/testInstance/testBU/verification/testExisting_39f6a488-20eb-4ba0-b0b9.verification-meta.json +11 -0
- package/test/mockRoot/deploy/testInstance/testBU/verification/testNew_39f6a488-20eb-4ba0-b0b9.verification-meta.json +11 -0
- package/test/resourceFactory.js +77 -12
- package/test/resources/1111111/accountUser/retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-response.xml +27 -0
- package/test/resources/1111111/accountUser/retrieve-ActiveFlag=falseANDEmaillike@-response.xml +156 -0
- package/test/resources/1111111/accountUser/retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml +87 -0
- package/test/resources/1111111/accountUser/retrieve-ActiveFlag=trueANDEmaillike@-response.xml +156 -0
- package/test/resources/1111111/accountUser/retrieve-CustomerKey=testExisting_userANDActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml +27 -0
- package/test/resources/1111111/accountUserAccount/retrieve-AccountUser.AccountUserID=700301950-response.xml +60 -0
- package/test/resources/1111111/data/v1/customobjectdata/key/testExisting_dataExtensionShared/rowset/get-response.json +13 -0
- package/test/resources/1111111/dataExtension/create-expected.json +23 -0
- package/test/resources/1111111/dataExtension/create-response.xml +59 -0
- package/test/resources/1111111/dataExtension/retrieve-expected.json +55 -0
- package/test/resources/1111111/dataExtension/retrieve-expected.md +18 -0
- package/test/resources/1111111/dataExtension/retrieve-response.xml +27 -1
- package/test/resources/1111111/dataExtension/update-expected.json +55 -0
- package/test/resources/1111111/dataExtension/update-response.xml +57 -0
- package/test/resources/1111111/dataExtensionField/retrieve-CustomerKey=[testExisting_dataExtensionShared].[TriggerUpdate_randomNumber_]-response.xml +45 -0
- package/test/resources/1111111/dataExtensionField/retrieve-DataExtension.CustomerKey=testExisting_dataExtensionShared-response.xml +98 -0
- package/test/resources/1111111/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_dataExtensionSharedORDataExtension.CustomerKey=testExisting_dataExtensionShared-response.xml +98 -0
- package/test/resources/1111111/dataExtensionField/retrieve-response.xml +98 -0
- package/test/resources/1111111/dataExtensionTemplate/retrieve-response.xml +303 -0
- package/test/resources/1111111/dataFolder/retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml +387 -0
- package/test/resources/1111111/dataFolder/retrieve-response.xml +353 -9
- package/test/resources/1111111/user/retrieve-expected.md +4 -2
- package/test/resources/9999999/attributeGroup/retrieve-expected.json +25 -0
- package/test/resources/9999999/attributeSet/retrieve-expected.json +143 -0
- package/test/resources/9999999/automation/build-expected.json +5 -2
- package/test/resources/9999999/automation/create-expected.json +11 -8
- package/test/resources/9999999/automation/create-testNew_automation-expected.md +5 -4
- package/test/resources/9999999/automation/patch_fixKeys-pause-expected.json +44 -0
- package/test/resources/9999999/automation/patch_fixKeys-schedule-expected.json +44 -0
- package/test/resources/9999999/automation/perform-08afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +42 -0
- package/test/resources/9999999/automation/perform-08afb0e2-b00a-4c88-fixKey_pause-response.xml +42 -0
- package/test/resources/9999999/automation/perform-08afb0e2-b00a-4c88-fixKey_schedule-response.xml +42 -0
- package/test/resources/9999999/automation/perform-a8afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +42 -0
- package/test/resources/9999999/automation/retrieve-expected.json +5 -2
- package/test/resources/9999999/automation/retrieve-testExisting_automation-expected.md +3 -2
- package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +52 -0
- package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-ad2e-pause-response.xml +38 -0
- package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-fixKey_pause-response.xml +52 -0
- package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-fixKey_schedule-response.xml +52 -0
- package/test/resources/9999999/automation/schedule-a8afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +52 -0
- package/test/resources/9999999/automation/template-expected.json +5 -2
- package/test/resources/9999999/automation/update-expected.json +1 -2
- package/test/resources/9999999/automation/update-testExisting_automation-expected.md +2 -2
- package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-ad2e-1f7f8788c560/get-response.json +7 -0
- package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-ad2e-pause/get-response.json +85 -0
- package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-ad2e-pause/patch-response.json +85 -0
- package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_pause/get-response.json +85 -0
- package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_pause/patch-response.json +85 -0
- package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_schedule/get-response.json +85 -0
- package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_schedule/patch-response.json +85 -0
- package/test/resources/9999999/automation/v1/automations/a8afb0e2-b00a-4c88-ad2e-1f7f8788c560/get-response.json +1 -1
- package/test/resources/9999999/automation/v1/automations/post-response.json +27 -19
- package/test/resources/9999999/automation/v1/dataextracts/56c5370a-f988-4f36-b0ee-0f876573f6d7/patch-response.json +38 -0
- package/test/resources/9999999/automation/v1/dataextracts/post-response.json +38 -0
- package/test/resources/9999999/automation/v1/dataextracttypes/get-response.json +50 -0
- package/test/resources/9999999/automation/v1/dataverifications/post-response.json +12 -0
- package/test/resources/9999999/automation/v1/dataverifications/testExisting_39f6a488-20eb-4ba0-b0b9/delete-response.json +0 -0
- package/test/resources/9999999/automation/v1/dataverifications/testExisting_39f6a488-20eb-4ba0-b0b9/get-response.json +12 -0
- package/test/resources/9999999/automation/v1/dataverifications/testExisting_39f6a488-20eb-4ba0-b0b9/patch-response.json +12 -0
- package/test/resources/9999999/automation/v1/filetransfers/72c328ac-f5b0-4e37-91d3-a775666f15a6/patch-response.json +18 -0
- package/test/resources/9999999/automation/v1/filetransfers/post-response.json +18 -0
- package/test/resources/9999999/automation/v1/ftplocations/get-response.json +18 -0
- package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/patch-response.json +31 -0
- package/test/resources/9999999/automation/v1/imports/get-response.json +1 -1
- package/test/resources/9999999/automation/v1/imports/post-response.json +30 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dae/actions/start/post-response.txt +1 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeys/get-response.json +17 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeys/patch-response.json +18 -0
- package/test/resources/9999999/automation/v1/queries/get-response.json +18 -1
- package/test/resources/9999999/automation/v1/scripts/39f6a488-20eb-4ba0-b0b9-023725b574e4/patch-response.json +10 -0
- package/test/resources/9999999/automation/v1/scripts/get-response.json +12 -2
- package/test/resources/9999999/automation/v1/scripts/post-response.json +10 -0
- package/test/resources/9999999/dataExtension/build-expected.json +16 -0
- package/test/resources/9999999/dataExtension/delete-response.xml +42 -0
- package/test/resources/9999999/dataExtension/retrieve-Name=testExisting_dataExtension-response.xml +52 -0
- package/test/resources/9999999/dataExtension/retrieve-expected.json +16 -0
- package/test/resources/9999999/dataExtension/retrieve-expected.md +3 -1
- package/test/resources/9999999/dataExtension/template-expected.json +16 -0
- package/test/resources/9999999/dataExtension/update-expected.json +17 -1
- package/test/resources/9999999/dataExtensionField/retrieve-CustomerKey=[testExisting_dataExtension].[LastName]-response.xml +44 -0
- package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testExisting_dataExtension-response.xml +133 -0
- package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_dataExtensionORDataExtension.CustomerKey=testExisting_dataExtension-response.xml +99 -0
- package/test/resources/9999999/dataExtensionField/retrieve-response.xml +36 -1
- package/test/resources/9999999/dataExtract/build-expected.json +35 -0
- package/test/resources/9999999/dataExtract/get-expected.json +39 -0
- package/test/resources/9999999/dataExtract/patch-expected.json +37 -0
- package/test/resources/9999999/dataExtract/post-expected.json +37 -0
- package/test/resources/9999999/dataExtract/template-expected.json +35 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=contextual_suppression_listORContentType=publicationORContentType=suppression_listORContentType=mysubsORContentType=list-response.xml +136 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=ssjsactivity-response.xml +48 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml +117 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=triggered_send_journeybuilderORContentType=triggered_sendORContentType=hidden-response.xml +276 -0
- package/test/resources/9999999/dataFolder/retrieve-response.xml +23 -0
- package/test/resources/9999999/email/retrieve-response.xml +203 -0
- package/test/resources/9999999/fileTransfer/build-expected.json +15 -0
- package/test/resources/9999999/fileTransfer/get-expected.json +17 -0
- package/test/resources/9999999/fileTransfer/patch-expected.json +17 -0
- package/test/resources/9999999/fileTransfer/post-expected.json +17 -0
- package/test/resources/9999999/fileTransfer/template-expected.json +15 -0
- package/test/resources/9999999/hub/v1/contacts/schema/attributeGroups/get-response.json +628 -0
- package/test/resources/9999999/hub/v1/contacts/schema/setDefinitions/get-response.json +20194 -0
- package/test/resources/9999999/importFile/build-expected.json +27 -0
- package/test/resources/9999999/importFile/get-expected.json +29 -0
- package/test/resources/9999999/importFile/patch-expected.json +29 -0
- package/test/resources/9999999/importFile/post-expected.json +29 -0
- package/test/resources/9999999/importFile/template-expected.json +27 -0
- package/test/resources/9999999/interaction/v1/interactions/233d4413-922c-4568-85a5-e5cc77efc3be/delete-response.json +1 -0
- package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/get-response.json +1 -1
- package/test/resources/9999999/messaging/v1/email/definitions/post-response.json +1 -1
- package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/delete-response.json +6 -0
- package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_pause-response.xml +32 -0
- package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_schedule-response.xml +32 -0
- package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_paused-response.xml +32 -0
- package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_scheduled-response.xml +32 -0
- package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_pause-response.xml +30 -0
- package/test/resources/9999999/program/retrieve-response.xml +21 -3
- package/test/resources/9999999/query/patch_fixKeys-expected.json +11 -0
- package/test/resources/9999999/query/patch_fixKeys-expected.sql +6 -0
- package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixKeysANDStatus=Active-response.xml +30 -0
- package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixedKeysANDStatus=Active-response.xml +30 -0
- package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testNew_queryANDStatus=Active-response.xml +30 -0
- package/test/resources/9999999/script/build-expected.json +6 -0
- package/test/resources/9999999/script/build-expected.ssjs +1 -0
- package/test/resources/9999999/script/get-expected.json +8 -0
- package/test/resources/9999999/script/get-expected.ssjs +1 -0
- package/test/resources/9999999/script/get_noScriptTag-expected.html +1 -0
- package/test/resources/9999999/script/get_noScriptTag-expected.json +8 -0
- package/test/resources/9999999/script/patch-expected.json +8 -0
- package/test/resources/9999999/script/patch-expected.ssjs +1 -0
- package/test/resources/9999999/script/post-expected.json +8 -0
- package/test/resources/9999999/script/post-expected.ssjs +1 -0
- package/test/resources/9999999/script/template-expected.json +6 -0
- package/test/resources/9999999/script/template-expected.ssjs +1 -0
- package/test/resources/9999999/transactionalEmail/build-expected.json +3 -7
- package/test/resources/9999999/transactionalEmail/get-expected.json +3 -7
- package/test/resources/9999999/transactionalEmail/patch-expected.json +3 -7
- package/test/resources/9999999/transactionalEmail/post-expected.json +3 -7
- package/test/resources/9999999/transactionalEmail/template-expected.json +3 -7
- package/test/resources/9999999/triggeredSend/build-expected.json +29 -0
- package/test/resources/9999999/triggeredSend/get-expected.json +29 -0
- package/test/resources/9999999/triggeredSend/patch-expected.json +29 -0
- package/test/resources/9999999/triggeredSend/post-expected.json +29 -0
- package/test/resources/9999999/triggeredSend/template-expected.json +29 -0
- package/test/resources/9999999/triggeredSendDefinition/create-response.xml +75 -0
- package/test/resources/9999999/triggeredSendDefinition/delete-response.xml +36 -0
- package/test/resources/9999999/triggeredSendDefinition/{retrieve-response.xml → retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml} +4 -4
- package/test/resources/9999999/triggeredSendDefinition/update-response.xml +74 -0
- package/test/resources/9999999/verification/build-expected.json +11 -0
- package/test/resources/9999999/verification/get-expected.json +11 -0
- package/test/resources/9999999/verification/patch-expected.json +11 -0
- package/test/resources/9999999/verification/post-expected.json +11 -0
- package/test/resources/9999999/verification/template-expected.json +11 -0
- package/test/type.attributeGroup.test.js +55 -0
- package/test/type.attributeSet.test.js +55 -0
- package/test/type.automation.test.js +650 -17
- package/test/type.dataExtension.test.js +205 -46
- package/test/type.dataExtract.test.js +194 -0
- package/test/type.fileTransfer.test.js +192 -0
- package/test/type.importFile.test.js +193 -0
- package/test/type.journey.test.js +38 -11
- package/test/type.mobileKeyword.test.js +6 -5
- package/test/type.mobileMessage.test.js +6 -4
- package/test/type.query.test.js +470 -17
- package/test/type.script.test.js +372 -0
- package/test/type.transactionalEmail.test.js +12 -11
- package/test/type.transactionalPush.test.js +2 -4
- package/test/type.transactionalSMS.test.js +2 -4
- package/test/type.triggeredSend.test.js +154 -0
- package/test/type.user.test.js +22 -10
- package/test/type.verification.test.js +173 -0
- package/test/utils.js +11 -2
- package/types/mcdev.d.js +14 -0
- package/lib/metadataTypes/SetDefinition.js +0 -37
- /package/test/resources/1111111/accountUser/{retrieve-response.xml → retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-response.xml} +0 -0
- /package/test/resources/1111111/accountUserAccount/{retrieve-response.xml → retrieve-AccountUser.AccountUserIDIN700301950,700301951,7471228-response.xml} +0 -0
- /package/test/resources/1111111/businessUnit/{retrieve-response.xml → retrieve-ID=1111111-response.xml} +0 -0
- /package/test/resources/1111111/list/{retrieve-response.xml → retrieve-CustomerKey=All SubscribersORListName=All Subscribers-response.xml} +0 -0
- /package/test/resources/1111111/role/{retrieve-response.xml → retrieve-IsPrivate=false-response.xml} +0 -0
- /package/test/resources/9999999/emailSendDefinition/{retrieve-response.xml → retrieve-IsPlatformObject=falseANDDescriptionnotEqualsSFSendDefinition-response.xml} +0 -0
- /package/test/resources/9999999/queryDefinition/{retrieve-response.xml → retrieve-CustomerKey=testExisting_queryANDStatus=Active-response.xml} +0 -0
package/lib/Deployer.js
CHANGED
|
@@ -44,17 +44,17 @@ class Deployer {
|
|
|
44
44
|
* @param {string} businessUnit references credentials from properties.json
|
|
45
45
|
* @param {TYPE.SupportedMetadataTypes[]} [selectedTypesArr] limit deployment to given metadata type
|
|
46
46
|
* @param {string[]} [keyArr] limit deployment to given metadata keys
|
|
47
|
-
* @param {boolean} [fromRetrieve] optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder
|
|
48
47
|
* @returns {Promise.<Object.<string,TYPE.MultiMetadataTypeMap>>} deployed metadata per BU (first key: bu name, second key: metadata type)
|
|
49
48
|
*/
|
|
50
|
-
static async deploy(businessUnit, selectedTypesArr, keyArr
|
|
49
|
+
static async deploy(businessUnit, selectedTypesArr, keyArr) {
|
|
51
50
|
Util.logger.info('mcdev:: Deploy');
|
|
52
51
|
const buMultiMetadataTypeMap = {};
|
|
53
52
|
const properties = await config.getProperties();
|
|
54
53
|
if (!(await config.checkProperties(properties))) {
|
|
55
54
|
return null;
|
|
56
55
|
}
|
|
57
|
-
|
|
56
|
+
const deployDirBak = properties.directories.deploy;
|
|
57
|
+
if (Util.OPTIONS.fromRetrieve) {
|
|
58
58
|
properties.directories.deploy = properties.directories.retrieve;
|
|
59
59
|
}
|
|
60
60
|
if (Array.isArray(selectedTypesArr)) {
|
|
@@ -66,7 +66,7 @@ class Deployer {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
if (
|
|
69
|
-
fromRetrieve &&
|
|
69
|
+
Util.OPTIONS.fromRetrieve &&
|
|
70
70
|
(!selectedTypesArr ||
|
|
71
71
|
!Array.isArray(selectedTypesArr) ||
|
|
72
72
|
!selectedTypesArr.length ||
|
|
@@ -97,8 +97,7 @@ class Deployer {
|
|
|
97
97
|
bu,
|
|
98
98
|
properties,
|
|
99
99
|
selectedTypesArr,
|
|
100
|
-
keyArr
|
|
101
|
-
fromRetrieve
|
|
100
|
+
keyArr
|
|
102
101
|
);
|
|
103
102
|
buMultiMetadataTypeMap[cred + '/' + bu] = multiMetadataTypeMap;
|
|
104
103
|
counter_credBu++;
|
|
@@ -137,7 +136,7 @@ class Deployer {
|
|
|
137
136
|
return;
|
|
138
137
|
}
|
|
139
138
|
// valid credential given and -all- BUs targeted
|
|
140
|
-
Util.logger.info(
|
|
139
|
+
Util.logger.info(`:: Deploying all BUs for ${cred}`);
|
|
141
140
|
let counter_credBu = 0;
|
|
142
141
|
// for (const bu in properties.credentials[cred].businessUnits) {
|
|
143
142
|
const deployFolders = await File.readDirectories(
|
|
@@ -151,15 +150,14 @@ class Deployer {
|
|
|
151
150
|
buPath,
|
|
152
151
|
properties,
|
|
153
152
|
selectedTypesArr,
|
|
154
|
-
keyArr
|
|
155
|
-
fromRetrieve
|
|
153
|
+
keyArr
|
|
156
154
|
);
|
|
157
155
|
buMultiMetadataTypeMap[cred + '/' + buPath] = multiMetadataTypeMap;
|
|
158
156
|
counter_credBu++;
|
|
159
157
|
Util.logger.info('');
|
|
160
158
|
Util.startLogger(true);
|
|
161
159
|
}
|
|
162
|
-
Util.logger.info(
|
|
160
|
+
Util.logger.info(` :: ${counter_credBu} BUs for ${cred}\n`);
|
|
163
161
|
} else {
|
|
164
162
|
// either bad credential or specific BU or no BU given
|
|
165
163
|
const multiMetadataTypeMap = await this._deployBU(
|
|
@@ -167,30 +165,31 @@ class Deployer {
|
|
|
167
165
|
bu,
|
|
168
166
|
properties,
|
|
169
167
|
selectedTypesArr,
|
|
170
|
-
keyArr
|
|
171
|
-
fromRetrieve
|
|
168
|
+
keyArr
|
|
172
169
|
);
|
|
173
170
|
counter_credBu++;
|
|
174
171
|
buMultiMetadataTypeMap[cred + '/' + bu] = multiMetadataTypeMap;
|
|
175
172
|
}
|
|
176
173
|
}
|
|
174
|
+
if (Util.OPTIONS.fromRetrieve) {
|
|
175
|
+
properties.directories.deploy = deployDirBak;
|
|
176
|
+
}
|
|
177
177
|
if (counter_credBu !== 0) {
|
|
178
|
-
Util.logger.info(
|
|
178
|
+
Util.logger.info(`:: Deployed ${counter_credBu} BUs\n`);
|
|
179
179
|
}
|
|
180
180
|
return buMultiMetadataTypeMap;
|
|
181
181
|
}
|
|
182
182
|
/**
|
|
183
|
-
* helper for {@link deploy}
|
|
183
|
+
* helper for {@link Deployer.deploy}
|
|
184
184
|
*
|
|
185
185
|
* @param {string} cred name of Credential
|
|
186
186
|
* @param {string} bu name of BU
|
|
187
187
|
* @param {TYPE.Mcdevrc} properties General configuration to be used in retrieve
|
|
188
188
|
* @param {TYPE.SupportedMetadataTypes[]} [typeArr] limit deployment to given metadata type
|
|
189
189
|
* @param {string[]} [keyArr] limit deployment to given metadata keys
|
|
190
|
-
* @param {boolean} [fromRetrieve] optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder
|
|
191
190
|
* @returns {Promise.<TYPE.MultiMetadataTypeMap>} ensure that BUs are worked on sequentially
|
|
192
191
|
*/
|
|
193
|
-
static async _deployBU(cred, bu, properties, typeArr, keyArr
|
|
192
|
+
static async _deployBU(cred, bu, properties, typeArr, keyArr) {
|
|
194
193
|
const buPath = `${cred}/${bu}`;
|
|
195
194
|
Util.logger.info(`:: Deploying to ${buPath}`);
|
|
196
195
|
const buObject = await Cli.getCredentialObject(properties, buPath, null, true);
|
|
@@ -201,7 +200,7 @@ class Deployer {
|
|
|
201
200
|
const deployer = new Deployer(properties, buObject);
|
|
202
201
|
try {
|
|
203
202
|
// await is required or the calls end up conflicting
|
|
204
|
-
multiMetadataTypeMap = await deployer._deploy(typeArr, keyArr
|
|
203
|
+
multiMetadataTypeMap = await deployer._deploy(typeArr, keyArr);
|
|
205
204
|
} catch (ex) {
|
|
206
205
|
Util.logger.errorStack(ex, 'mcdev.deploy failed');
|
|
207
206
|
}
|
|
@@ -214,11 +213,9 @@ class Deployer {
|
|
|
214
213
|
*
|
|
215
214
|
* @param {TYPE.SupportedMetadataTypes[]} [typeArr] limit deployment to given metadata type (can include subtype)
|
|
216
215
|
* @param {string[]} [keyArr] limit deployment to given metadata keys
|
|
217
|
-
* @param {boolean} [fromRetrieve] if true, no folders will be updated/created
|
|
218
|
-
* @param {boolean} [isRefresh] optional flag to indicate that triggeredSend should be refreshed after deployment of assets
|
|
219
216
|
* @returns {Promise.<TYPE.MultiMetadataTypeMap>} Promise of all deployed metadata
|
|
220
217
|
*/
|
|
221
|
-
async _deploy(typeArr, keyArr
|
|
218
|
+
async _deploy(typeArr, keyArr) {
|
|
222
219
|
if (await File.pathExists(this.deployDir)) {
|
|
223
220
|
/** @type {TYPE.MultiMetadataTypeMap} */
|
|
224
221
|
this.metadata = Deployer.readBUMetadata(this.deployDir, typeArr);
|
|
@@ -252,7 +249,7 @@ class Deployer {
|
|
|
252
249
|
}
|
|
253
250
|
}
|
|
254
251
|
|
|
255
|
-
if (!fromRetrieve) {
|
|
252
|
+
if (!Util.OPTIONS.fromRetrieve) {
|
|
256
253
|
await Deployer.createFolderDefinitions(
|
|
257
254
|
this.deployDir,
|
|
258
255
|
this.metadata,
|
|
@@ -292,13 +289,16 @@ class Deployer {
|
|
|
292
289
|
// TODO rewrite to allow deploying only a specific sub-type; currently, subtypes are ignored when executing deploy
|
|
293
290
|
const type = metadataType;
|
|
294
291
|
if (this.metadata[type]) {
|
|
295
|
-
Util.logger.info(
|
|
292
|
+
Util.logger.info(
|
|
293
|
+
'Deploying: ' +
|
|
294
|
+
metadataType +
|
|
295
|
+
(Util.OPTIONS.fromRetrieve ? ' (from retrieve folder)' : '')
|
|
296
|
+
);
|
|
296
297
|
|
|
297
298
|
const result = await MetadataTypeInfo[type].deploy(
|
|
298
299
|
this.metadata[type],
|
|
299
300
|
this.deployDir,
|
|
300
|
-
this.retrieveDir
|
|
301
|
-
isRefresh
|
|
301
|
+
this.retrieveDir
|
|
302
302
|
);
|
|
303
303
|
multiMetadataTypeMap[type] = result;
|
|
304
304
|
cache.mergeMetadata(type, result);
|
|
@@ -312,7 +312,7 @@ class Deployer {
|
|
|
312
312
|
*
|
|
313
313
|
* @param {string} deployDir root directory of metadata.
|
|
314
314
|
* @param {string[]} [typeArr] limit deployment to given metadata type
|
|
315
|
-
* @param {boolean} [listBadKeys
|
|
315
|
+
* @param {boolean} [listBadKeys] do not print errors, used for badKeys()
|
|
316
316
|
* @returns {TYPE.MultiMetadataTypeMap} Metadata of BU in local directory
|
|
317
317
|
*/
|
|
318
318
|
static readBUMetadata(deployDir, typeArr, listBadKeys) {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
const MetadataTypeDefinitions = {
|
|
7
7
|
asset: require('./metadataTypes/definitions/Asset.definition'),
|
|
8
8
|
attributeGroup: require('./metadataTypes/definitions/AttributeGroup.definition'),
|
|
9
|
+
attributeSet: require('./metadataTypes/definitions/AttributeSet.definition'),
|
|
9
10
|
automation: require('./metadataTypes/definitions/Automation.definition'),
|
|
10
11
|
campaign: require('./metadataTypes/definitions/Campaign.definition'),
|
|
11
12
|
contentArea: require('./metadataTypes/definitions/ContentArea.definition'),
|
|
@@ -32,12 +33,12 @@ const MetadataTypeDefinitions = {
|
|
|
32
33
|
role: require('./metadataTypes/definitions/Role.definition'),
|
|
33
34
|
script: require('./metadataTypes/definitions/Script.definition'),
|
|
34
35
|
sendClassification: require('./metadataTypes/definitions/SendClassification.definition'),
|
|
35
|
-
setDefinition: require('./metadataTypes/definitions/SetDefinition.definition'),
|
|
36
36
|
transactionalEmail: require('./metadataTypes/definitions/TransactionalEmail.definition'),
|
|
37
37
|
transactionalPush: require('./metadataTypes/definitions/TransactionalPush.definition'),
|
|
38
38
|
transactionalSMS: require('./metadataTypes/definitions/TransactionalSMS.definition'),
|
|
39
39
|
triggeredSend: require('./metadataTypes/definitions/TriggeredSend.definition'),
|
|
40
40
|
user: require('./metadataTypes/definitions/User.definition'),
|
|
41
|
+
verification: require('./metadataTypes/definitions/Verification.definition'),
|
|
41
42
|
};
|
|
42
43
|
|
|
43
44
|
module.exports = MetadataTypeDefinitions;
|
package/lib/MetadataTypeInfo.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
const MetadataTypeInfo = {
|
|
7
7
|
asset: require('./metadataTypes/Asset'),
|
|
8
8
|
attributeGroup: require('./metadataTypes/AttributeGroup'),
|
|
9
|
+
attributeSet: require('./metadataTypes/AttributeSet'),
|
|
9
10
|
automation: require('./metadataTypes/Automation'),
|
|
10
11
|
campaign: require('./metadataTypes/Campaign'),
|
|
11
12
|
contentArea: require('./metadataTypes/ContentArea'),
|
|
@@ -32,12 +33,12 @@ const MetadataTypeInfo = {
|
|
|
32
33
|
role: require('./metadataTypes/Role'),
|
|
33
34
|
script: require('./metadataTypes/Script'),
|
|
34
35
|
sendClassification: require('./metadataTypes/SendClassification'),
|
|
35
|
-
setDefinition: require('./metadataTypes/SetDefinition'),
|
|
36
36
|
transactionalEmail: require('./metadataTypes/TransactionalEmail'),
|
|
37
37
|
transactionalPush: require('./metadataTypes/TransactionalPush'),
|
|
38
38
|
transactionalSMS: require('./metadataTypes/TransactionalSMS'),
|
|
39
39
|
triggeredSend: require('./metadataTypes/TriggeredSend'),
|
|
40
40
|
user: require('./metadataTypes/User'),
|
|
41
|
+
verification: require('./metadataTypes/Verification'),
|
|
41
42
|
};
|
|
42
43
|
|
|
43
44
|
module.exports = MetadataTypeInfo;
|
package/lib/Retriever.js
CHANGED
|
@@ -189,7 +189,7 @@ class Retriever {
|
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
/**
|
|
192
|
-
* helper for {@link retrieve} to get all dependencies of the given types
|
|
192
|
+
* helper for {@link Retriever.retrieve} to get all dependencies of the given types
|
|
193
193
|
*
|
|
194
194
|
* @param {TYPE.SupportedMetadataTypes[]} metadataTypes list of metadata types to retrieve; can include subtypes!
|
|
195
195
|
* @returns {TYPE.SupportedMetadataTypes[]} unique list dependent metadata types
|
package/lib/cli.js
CHANGED
|
@@ -31,6 +31,12 @@ yargs
|
|
|
31
31
|
.positional('KEY', {
|
|
32
32
|
type: 'string',
|
|
33
33
|
describe: 'metadata keys that shall be exclusively downloaded',
|
|
34
|
+
})
|
|
35
|
+
.option('like', {
|
|
36
|
+
type: 'string',
|
|
37
|
+
group: 'Options for retrieve:',
|
|
38
|
+
describe:
|
|
39
|
+
'filter metadata components (can include % as wildcard or _ for a single character)',
|
|
34
40
|
});
|
|
35
41
|
},
|
|
36
42
|
handler: (argv) => {
|
|
@@ -39,7 +45,7 @@ yargs
|
|
|
39
45
|
},
|
|
40
46
|
})
|
|
41
47
|
.command({
|
|
42
|
-
command: 'deploy [BU] [TYPE] [KEY]
|
|
48
|
+
command: 'deploy [BU] [TYPE] [KEY]',
|
|
43
49
|
aliases: ['d'],
|
|
44
50
|
desc: 'deploys local metadata to a business unit',
|
|
45
51
|
builder: (yargs) => {
|
|
@@ -59,22 +65,43 @@ yargs
|
|
|
59
65
|
})
|
|
60
66
|
.option('changeKeyField', {
|
|
61
67
|
type: 'string',
|
|
68
|
+
group: 'Options for deploy:',
|
|
62
69
|
describe:
|
|
63
70
|
'enables updating the key of the deployed metadata with the value in provided field (e.g. c__newKey). Can be used to sync name and key fields.',
|
|
64
71
|
})
|
|
65
72
|
.option('changeKeyValue', {
|
|
66
73
|
type: 'string',
|
|
74
|
+
group: 'Options for deploy:',
|
|
67
75
|
describe:
|
|
68
76
|
'allows updating the key of the metadata to the provided value. Only available if a single type and key is deployed',
|
|
69
77
|
})
|
|
70
78
|
.option('fromRetrieve', {
|
|
71
79
|
type: 'boolean',
|
|
80
|
+
group: 'Options for deploy:',
|
|
72
81
|
describe: 'optionally deploy from retrieve folder',
|
|
73
82
|
})
|
|
74
83
|
.option('refresh', {
|
|
75
84
|
type: 'boolean',
|
|
85
|
+
group: 'Options for deploy:',
|
|
76
86
|
describe:
|
|
77
87
|
'optional for asset-message: runs refresh command for related triggeredSends after deploy',
|
|
88
|
+
})
|
|
89
|
+
.option('execute', {
|
|
90
|
+
type: 'boolean',
|
|
91
|
+
group: 'Options for deploy:',
|
|
92
|
+
describe:
|
|
93
|
+
'optional: executes item after deploy; this will run the item once immediately',
|
|
94
|
+
})
|
|
95
|
+
.option('schedule', {
|
|
96
|
+
type: 'boolean',
|
|
97
|
+
group: 'Options for deploy:',
|
|
98
|
+
describe:
|
|
99
|
+
'optionally start existing schedule instead of running item once immediately (only works for automations)',
|
|
100
|
+
})
|
|
101
|
+
.option('fixShared', {
|
|
102
|
+
group: 'Options for deploy:',
|
|
103
|
+
describe:
|
|
104
|
+
"optionally ensure that updates to shared DataExtensions become visible in child BU's data designer (SF Known issue W-11031095)",
|
|
78
105
|
});
|
|
79
106
|
},
|
|
80
107
|
handler: (argv) => {
|
|
@@ -307,6 +334,7 @@ yargs
|
|
|
307
334
|
builder: (yargs) => {
|
|
308
335
|
yargs.option('json', {
|
|
309
336
|
type: 'boolean',
|
|
337
|
+
group: 'Options for explainTypes:',
|
|
310
338
|
describe: 'optionaly return info in json format',
|
|
311
339
|
});
|
|
312
340
|
},
|
|
@@ -316,7 +344,7 @@ yargs
|
|
|
316
344
|
},
|
|
317
345
|
})
|
|
318
346
|
.command({
|
|
319
|
-
command: 'createDeltaPkg [range]
|
|
347
|
+
command: 'createDeltaPkg [range]',
|
|
320
348
|
aliases: ['cdp'],
|
|
321
349
|
desc: 'Copies commit-based file delta into deploy folder',
|
|
322
350
|
builder: (yargs) => {
|
|
@@ -327,11 +355,13 @@ yargs
|
|
|
327
355
|
})
|
|
328
356
|
.option('filter', {
|
|
329
357
|
type: 'string',
|
|
358
|
+
group: 'Options for createDeltaPkg:',
|
|
330
359
|
describe:
|
|
331
360
|
'Disable templating & instead filter by the specified BU path (comma separated), can include subtype, will be prefixed with "retrieve/"',
|
|
332
361
|
})
|
|
333
362
|
.option('commitHistory', {
|
|
334
363
|
type: 'number',
|
|
364
|
+
group: 'Options for createDeltaPkg:',
|
|
335
365
|
describe: 'Number of commits to look back for changes (supersedes config)',
|
|
336
366
|
});
|
|
337
367
|
},
|
|
@@ -390,8 +420,8 @@ yargs
|
|
|
390
420
|
},
|
|
391
421
|
})
|
|
392
422
|
.command({
|
|
393
|
-
command: 'execute <BU> <TYPE>
|
|
394
|
-
aliases: ['exec'],
|
|
423
|
+
command: 'execute <BU> <TYPE> [KEY]',
|
|
424
|
+
aliases: ['exec', 'start'],
|
|
395
425
|
desc: 'executes the entity (query/journey/automation etc.)',
|
|
396
426
|
builder: (yargs) => {
|
|
397
427
|
yargs
|
|
@@ -406,11 +436,128 @@ yargs
|
|
|
406
436
|
.positional('KEY', {
|
|
407
437
|
type: 'string',
|
|
408
438
|
describe: 'key(s) of the metadata component(s)',
|
|
439
|
+
})
|
|
440
|
+
.option('like', {
|
|
441
|
+
type: 'string',
|
|
442
|
+
group: 'Options for execute:',
|
|
443
|
+
describe:
|
|
444
|
+
'filter metadata components (can include % as wildcard or _ for a single character)',
|
|
445
|
+
})
|
|
446
|
+
.option('schedule', {
|
|
447
|
+
type: 'boolean',
|
|
448
|
+
group: 'Options for execute:',
|
|
449
|
+
describe:
|
|
450
|
+
'optionally start existing schedule instead of running item once immediately (only works for automations)',
|
|
409
451
|
});
|
|
410
452
|
},
|
|
411
453
|
handler: (argv) => {
|
|
412
454
|
Mcdev.setOptions(argv);
|
|
413
|
-
|
|
455
|
+
// ! do not allow multiple types to be passed in here via csvToArray
|
|
456
|
+
Mcdev.execute(argv.BU, argv.TYPE, csvToArray(argv.KEY));
|
|
457
|
+
},
|
|
458
|
+
})
|
|
459
|
+
.command({
|
|
460
|
+
command: 'schedule <BU> <TYPE> [KEY]',
|
|
461
|
+
aliases: ['sched'],
|
|
462
|
+
desc: 'starts the predefined schedule of the item (shortcut for running execute --schedule)',
|
|
463
|
+
builder: (yargs) => {
|
|
464
|
+
yargs
|
|
465
|
+
.positional('BU', {
|
|
466
|
+
type: 'string',
|
|
467
|
+
describe: 'the business unit where to start an item',
|
|
468
|
+
})
|
|
469
|
+
.positional('TYPE', {
|
|
470
|
+
type: 'string',
|
|
471
|
+
describe: 'metadata type',
|
|
472
|
+
})
|
|
473
|
+
.positional('KEY', {
|
|
474
|
+
type: 'string',
|
|
475
|
+
describe: 'key(s) of the metadata component(s)',
|
|
476
|
+
})
|
|
477
|
+
.option('like', {
|
|
478
|
+
type: 'string',
|
|
479
|
+
group: 'Options for execute:',
|
|
480
|
+
describe:
|
|
481
|
+
'filter metadata components (can include % as wildcard or _ for a single character)',
|
|
482
|
+
});
|
|
483
|
+
},
|
|
484
|
+
handler: (argv) => {
|
|
485
|
+
Mcdev.setOptions(argv);
|
|
486
|
+
// ! do not allow multiple types to be passed in here via csvToArray
|
|
487
|
+
Mcdev.schedule(argv.BU, argv.TYPE, csvToArray(argv.KEY));
|
|
488
|
+
},
|
|
489
|
+
})
|
|
490
|
+
.command({
|
|
491
|
+
command: 'pause <BU> <TYPE> [KEY]',
|
|
492
|
+
aliases: ['p', 'stop'],
|
|
493
|
+
desc: 'pauses the entity (automation etc.)',
|
|
494
|
+
builder: (yargs) => {
|
|
495
|
+
yargs
|
|
496
|
+
.positional('BU', {
|
|
497
|
+
type: 'string',
|
|
498
|
+
describe: 'the business unit where to start an item',
|
|
499
|
+
})
|
|
500
|
+
.positional('TYPE', {
|
|
501
|
+
type: 'string',
|
|
502
|
+
describe: 'metadata type',
|
|
503
|
+
})
|
|
504
|
+
.positional('KEY', {
|
|
505
|
+
type: 'string',
|
|
506
|
+
describe: 'key(s) of the metadata component(s)',
|
|
507
|
+
})
|
|
508
|
+
.option('like', {
|
|
509
|
+
type: 'string',
|
|
510
|
+
group: 'Options for pause:',
|
|
511
|
+
describe:
|
|
512
|
+
'filter metadata components (can include % as wildcard or _ for a single character)',
|
|
513
|
+
});
|
|
514
|
+
},
|
|
515
|
+
handler: (argv) => {
|
|
516
|
+
Mcdev.setOptions(argv);
|
|
517
|
+
// ! do not allow multiple types to be passed in here via csvToArray
|
|
518
|
+
Mcdev.pause(argv.BU, argv.TYPE, csvToArray(argv.KEY));
|
|
519
|
+
},
|
|
520
|
+
})
|
|
521
|
+
.command({
|
|
522
|
+
command: 'fixKeys <BU> <TYPE> [KEY]',
|
|
523
|
+
aliases: ['fx'],
|
|
524
|
+
desc: 'changes the key of the items to match the name',
|
|
525
|
+
builder: (yargs) => {
|
|
526
|
+
yargs
|
|
527
|
+
.positional('BU', {
|
|
528
|
+
type: 'string',
|
|
529
|
+
describe: 'the business unit where to fix keys',
|
|
530
|
+
})
|
|
531
|
+
.positional('TYPE', {
|
|
532
|
+
type: 'string',
|
|
533
|
+
describe: 'metadata type',
|
|
534
|
+
})
|
|
535
|
+
.positional('KEY', {
|
|
536
|
+
type: 'string',
|
|
537
|
+
describe: 'key(s) of the metadata component(s)',
|
|
538
|
+
})
|
|
539
|
+
.option('like', {
|
|
540
|
+
type: 'string',
|
|
541
|
+
group: 'Options for fixKeys:',
|
|
542
|
+
describe:
|
|
543
|
+
'filter metadata components (can include % as wildcard or _ for a single character)',
|
|
544
|
+
})
|
|
545
|
+
.option('execute', {
|
|
546
|
+
type: 'boolean',
|
|
547
|
+
group: 'Options for fixKeys:',
|
|
548
|
+
describe:
|
|
549
|
+
'optional: executes item after deploy; this will run the item once immediately',
|
|
550
|
+
})
|
|
551
|
+
.option('schedule', {
|
|
552
|
+
type: 'boolean',
|
|
553
|
+
group: 'Options for fixKeys:',
|
|
554
|
+
describe:
|
|
555
|
+
'optionally start existing schedule instead of running item once immediately (only works for automations)',
|
|
556
|
+
});
|
|
557
|
+
},
|
|
558
|
+
handler: (argv) => {
|
|
559
|
+
Mcdev.setOptions(argv);
|
|
560
|
+
Mcdev.fixKeys(argv.BU, argv.TYPE, csvToArray(argv.KEY));
|
|
414
561
|
},
|
|
415
562
|
})
|
|
416
563
|
.command({
|
|
@@ -434,6 +581,10 @@ yargs
|
|
|
434
581
|
type: 'boolean',
|
|
435
582
|
description: 'Only output errors to CLI',
|
|
436
583
|
})
|
|
584
|
+
.option('noLogColors', {
|
|
585
|
+
type: 'boolean',
|
|
586
|
+
description: 'do not use color codes in CLI log output',
|
|
587
|
+
})
|
|
437
588
|
.option('noLogFile', {
|
|
438
589
|
type: 'boolean',
|
|
439
590
|
description: 'Only output log to CLI but not to files',
|
|
@@ -466,9 +617,13 @@ function csvToArray(csv) {
|
|
|
466
617
|
return !csv
|
|
467
618
|
? null
|
|
468
619
|
: csv.includes(',')
|
|
469
|
-
? csv
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
620
|
+
? csv
|
|
621
|
+
.split(',')
|
|
622
|
+
.map((item) =>
|
|
623
|
+
// allow whitespace in comma-separated lists
|
|
624
|
+
item.trim()
|
|
625
|
+
)
|
|
626
|
+
// make sure trailing commas are ignored
|
|
627
|
+
.filter(Boolean)
|
|
628
|
+
: [csv.trim()].filter(Boolean);
|
|
474
629
|
}
|