mcdev 7.0.3 → 7.1.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/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +1 -0
- package/.github/workflows/code-test.yml +48 -0
- package/.husky/post-checkout +1 -1
- package/.husky/post-merge +7 -1
- package/.husky/pre-commit +3 -1
- package/@types/lib/Builder.d.ts +13 -13
- package/@types/lib/Builder.d.ts.map +1 -1
- package/@types/lib/Deployer.d.ts +19 -16
- package/@types/lib/Deployer.d.ts.map +1 -1
- package/@types/lib/Retriever.d.ts +15 -15
- package/@types/lib/Retriever.d.ts.map +1 -1
- package/@types/lib/cli.d.ts +1 -1
- package/@types/lib/cli.d.ts.map +1 -1
- package/@types/lib/index.d.ts +102 -51
- package/@types/lib/index.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Asset.d.ts +71 -59
- package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
- package/@types/lib/metadataTypes/AttributeGroup.d.ts +6 -8
- package/@types/lib/metadataTypes/AttributeGroup.d.ts.map +1 -1
- package/@types/lib/metadataTypes/AttributeSet.d.ts +10 -21
- package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Automation.d.ts +47 -49
- package/@types/lib/metadataTypes/Automation.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Campaign.d.ts +12 -18
- package/@types/lib/metadataTypes/Campaign.d.ts.map +1 -1
- package/@types/lib/metadataTypes/ContentArea.d.ts +13 -31
- package/@types/lib/metadataTypes/ContentArea.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtension.d.ts +28 -33
- package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtensionField.d.ts +15 -22
- package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts +12 -11
- package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtract.d.ts +13 -28
- package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtractType.d.ts +11 -10
- package/@types/lib/metadataTypes/DataExtractType.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DeliveryProfile.d.ts +11 -10
- package/@types/lib/metadataTypes/DeliveryProfile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Discovery.d.ts +11 -10
- package/@types/lib/metadataTypes/Discovery.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Email.d.ts +14 -34
- package/@types/lib/metadataTypes/Email.d.ts.map +1 -1
- package/@types/lib/metadataTypes/EmailSend.d.ts +18 -10
- package/@types/lib/metadataTypes/EmailSend.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Event.d.ts +22 -16
- package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
- package/@types/lib/metadataTypes/FileLocation.d.ts +11 -10
- package/@types/lib/metadataTypes/FileLocation.d.ts.map +1 -1
- package/@types/lib/metadataTypes/FileTransfer.d.ts +12 -18
- package/@types/lib/metadataTypes/FileTransfer.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Filter.d.ts +11 -10
- package/@types/lib/metadataTypes/Filter.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Folder.d.ts +49 -35
- package/@types/lib/metadataTypes/Folder.d.ts.map +1 -1
- package/@types/lib/metadataTypes/ImportFile.d.ts +16 -15
- package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Journey.d.ts +55 -35
- package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
- package/@types/lib/metadataTypes/List.d.ts +13 -12
- package/@types/lib/metadataTypes/List.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MetadataType.d.ts +73 -26
- package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileCode.d.ts +12 -20
- package/@types/lib/metadataTypes/MobileCode.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileKeyword.d.ts +23 -14
- package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileMessage.d.ts +18 -42
- package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Query.d.ts +15 -12
- package/@types/lib/metadataTypes/Query.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Role.d.ts +12 -11
- package/@types/lib/metadataTypes/Role.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Script.d.ts +18 -25
- package/@types/lib/metadataTypes/Script.d.ts.map +1 -1
- package/@types/lib/metadataTypes/SendClassification.d.ts +13 -10
- package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -1
- package/@types/lib/metadataTypes/SenderProfile.d.ts +12 -25
- package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts +18 -12
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalMessage.d.ts +12 -32
- package/@types/lib/metadataTypes/TransactionalMessage.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalPush.d.ts +15 -21
- package/@types/lib/metadataTypes/TransactionalPush.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalSMS.d.ts +16 -18
- package/@types/lib/metadataTypes/TransactionalSMS.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TriggeredSend.d.ts +19 -24
- package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
- package/@types/lib/metadataTypes/User.d.ts +23 -40
- package/@types/lib/metadataTypes/User.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Verification.d.ts +16 -13
- package/@types/lib/metadataTypes/Verification.d.ts.map +1 -1
- package/@types/lib/metadataTypes/definitions/Asset.definition.d.ts +24 -14
- package/@types/lib/metadataTypes/definitions/AttributeGroup.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/AttributeSet.definition.d.ts +5 -0
- package/@types/lib/metadataTypes/definitions/Automation.definition.d.ts +16 -0
- package/@types/lib/metadataTypes/definitions/Campaign.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/ContentArea.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtension.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionField.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionTemplate.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtract.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtractType.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DeliveryProfile.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Discovery.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Email.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/EmailSend.definition.d.ts +8 -0
- package/@types/lib/metadataTypes/definitions/Event.definition.d.ts +10 -1
- package/@types/lib/metadataTypes/definitions/FileLocation.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/FileTransfer.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Filter.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Folder.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/ImportFile.definition.d.ts +5 -0
- package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts +13 -0
- package/@types/lib/metadataTypes/definitions/List.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/MobileCode.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/MobileKeyword.definition.d.ts +9 -0
- package/@types/lib/metadataTypes/definitions/MobileMessage.definition.d.ts +4 -0
- package/@types/lib/metadataTypes/definitions/Query.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/Role.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Script.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/SendClassification.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/SenderProfile.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts +6 -0
- package/@types/lib/metadataTypes/definitions/TransactionalMessage.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalPush.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/TransactionalSMS.definition.d.ts +4 -0
- package/@types/lib/metadataTypes/definitions/TriggeredSend.definition.d.ts +6 -0
- package/@types/lib/metadataTypes/definitions/User.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Verification.definition.d.ts +3 -0
- package/@types/lib/util/auth.d.ts +19 -18
- package/@types/lib/util/auth.d.ts.map +1 -1
- package/@types/lib/util/businessUnit.d.ts +17 -17
- package/@types/lib/util/businessUnit.d.ts.map +1 -1
- package/@types/lib/util/cache.d.ts +34 -32
- package/@types/lib/util/cache.d.ts.map +1 -1
- package/@types/lib/util/cli.d.ts +30 -33
- package/@types/lib/util/cli.d.ts.map +1 -1
- package/@types/lib/util/config.d.ts +20 -20
- package/@types/lib/util/config.d.ts.map +1 -1
- package/@types/lib/util/devops.d.ts +21 -21
- package/@types/lib/util/devops.d.ts.map +1 -1
- package/@types/lib/util/file.d.ts +179 -18
- package/@types/lib/util/file.d.ts.map +1 -1
- package/@types/lib/util/init.config.d.ts +19 -19
- package/@types/lib/util/init.config.d.ts.map +1 -1
- package/@types/lib/util/init.d.ts +20 -20
- package/@types/lib/util/init.d.ts.map +1 -1
- package/@types/lib/util/init.git.d.ts +2 -2
- package/@types/lib/util/init.git.d.ts.map +1 -1
- package/@types/lib/util/init.npm.d.ts +2 -2
- package/@types/lib/util/init.npm.d.ts.map +1 -1
- package/@types/lib/util/replaceContentBlockReference.d.ts +55 -32
- package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
- package/@types/lib/util/util.d.ts +64 -39
- package/@types/lib/util/util.d.ts.map +1 -1
- package/@types/types/mcdev.d.d.ts +160 -52
- package/@types/types/mcdev.d.d.ts.map +1 -1
- package/boilerplate/files/.vscode/settings.json +1 -0
- package/boilerplate/forcedUpdates.json +4 -0
- package/boilerplate/gitignore-template +0 -1
- package/eslint.config.js +0 -1
- package/lib/Builder.js +13 -8
- package/lib/Deployer.js +13 -8
- package/lib/Retriever.js +4 -1
- package/lib/cli.js +384 -288
- package/lib/index.js +620 -241
- package/lib/metadataTypes/Asset.js +455 -209
- package/lib/metadataTypes/Automation.js +34 -0
- package/lib/metadataTypes/DataExtension.js +36 -31
- package/lib/metadataTypes/DataExtensionField.js +2 -3
- package/lib/metadataTypes/Event.js +227 -37
- package/lib/metadataTypes/Folder.js +64 -49
- package/lib/metadataTypes/Journey.js +340 -58
- package/lib/metadataTypes/MetadataType.js +272 -61
- package/lib/metadataTypes/MobileKeyword.js +12 -1
- package/lib/metadataTypes/Role.js +9 -7
- package/lib/metadataTypes/Script.js +4 -3
- package/lib/metadataTypes/SenderProfile.js +18 -5
- package/lib/metadataTypes/TransactionalEmail.js +2 -2
- package/lib/metadataTypes/TriggeredSend.js +21 -5
- package/lib/metadataTypes/User.js +31 -27
- package/lib/metadataTypes/definitions/Asset.definition.js +10 -2
- package/lib/metadataTypes/definitions/AttributeGroup.definition.js +1 -0
- package/lib/metadataTypes/definitions/AttributeSet.definition.js +11 -0
- package/lib/metadataTypes/definitions/Automation.definition.js +9 -0
- package/lib/metadataTypes/definitions/Campaign.definition.js +1 -0
- package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtension.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtensionField.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtract.definition.js +2 -1
- package/lib/metadataTypes/definitions/DataExtractType.definition.js +1 -0
- package/lib/metadataTypes/definitions/DeliveryProfile.definition.js +1 -0
- package/lib/metadataTypes/definitions/Discovery.definition.js +1 -0
- package/lib/metadataTypes/definitions/Email.definition.js +1 -0
- package/lib/metadataTypes/definitions/EmailSend.definition.js +8 -0
- package/lib/metadataTypes/definitions/Event.definition.js +9 -8
- package/lib/metadataTypes/definitions/FileLocation.definition.js +1 -0
- package/lib/metadataTypes/definitions/FileTransfer.definition.js +4 -0
- package/lib/metadataTypes/definitions/Filter.definition.js +1 -0
- package/lib/metadataTypes/definitions/Folder.definition.js +10 -8
- package/lib/metadataTypes/definitions/ImportFile.definition.js +8 -1
- package/lib/metadataTypes/definitions/Journey.definition.js +28 -0
- package/lib/metadataTypes/definitions/List.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileCode.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileKeyword.definition.js +7 -0
- package/lib/metadataTypes/definitions/MobileMessage.definition.js +9 -0
- package/lib/metadataTypes/definitions/Query.definition.js +3 -0
- package/lib/metadataTypes/definitions/Role.definition.js +1 -0
- package/lib/metadataTypes/definitions/Script.definition.js +1 -0
- package/lib/metadataTypes/definitions/SendClassification.definition.js +4 -0
- package/lib/metadataTypes/definitions/SenderProfile.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +7 -0
- package/lib/metadataTypes/definitions/TransactionalMessage.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalPush.definition.js +3 -0
- package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +4 -0
- package/lib/metadataTypes/definitions/TriggeredSend.definition.js +10 -3
- package/lib/metadataTypes/definitions/User.definition.js +3 -0
- package/lib/metadataTypes/definitions/Verification.definition.js +1 -0
- package/lib/util/auth.js +0 -1
- package/lib/util/cache.js +35 -0
- package/lib/util/cli.js +96 -140
- package/lib/util/config.js +11 -19
- package/lib/util/devops.js +42 -43
- package/lib/util/file.js +7 -10
- package/lib/util/init.config.js +6 -10
- package/lib/util/init.git.js +43 -57
- package/lib/util/init.js +35 -59
- package/lib/util/replaceContentBlockReference.js +110 -61
- package/lib/util/util.js +90 -4
- package/package.json +22 -19
- package/test/general.test.js +1144 -172
- package/test/mockRoot/.mcdevrc.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/event/testExisting_event.event-meta.json +201 -0
- package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withExistingDE.event-meta.json +233 -0
- package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withSchema.event-meta.json +194 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/4912312345678.TESTNEW_KEYWORD.mobileKeyword-meta.json +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/4912312345678.TESTNEW_KEYWORD_BLOCKED.mobileKeyword-meta.json +1 -0
- package/test/resourceFactory.js +43 -11
- package/test/resources/1111111/dataFolder/retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml +364 -0
- package/test/resources/9999999/asset/{block-1157-retrieve-expected.html → build-asset_htmlblock-expected.html} +1 -1
- package/test/resources/9999999/asset/build-asset_htmlblock-expected.json +29 -0
- package/test/resources/9999999/asset/build-templatebasedemail-expected.json +65 -0
- package/test/resources/9999999/asset/resolveId-1295064-noPath-expected.json +3 -3
- package/test/resources/9999999/asset/resolveId-1295064-withPath-expected.json +3 -3
- package/test/resources/9999999/asset/retrieve-templatebasedemail-expected.json +65 -0
- package/test/resources/9999999/asset/template-emailTemplate-expected.json +20 -0
- package/test/resources/9999999/asset/template-templatebasedemail-expected.json +65 -0
- package/test/resources/9999999/asset/template-testExisting_asset_htmlblock-expected.json +29 -0
- package/test/resources/9999999/asset/testExisting_asset_htmlblock-retrieve-expected.html +23 -0
- package/test/resources/9999999/asset/{block-1157-retrieve-expected.json → testExisting_asset_htmlblock-retrieve-expected.json} +3 -3
- package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-key-expected.html +6 -6
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-id-expected.amp +1 -1
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-key-expected.amp +4 -4
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-name-expected.amp +1 -1
- package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-key-expected.amp +4 -4
- package/test/resources/9999999/asset/v1/content/assets/1295064/get-response.json +4 -4
- package/test/resources/9999999/asset/v1/content/assets/1295065/get-response.json +60 -0
- package/test/resources/9999999/asset/v1/content/assets/1295066/get-response.json +60 -0
- package/test/resources/9999999/asset/v1/content/assets/5289/get-response.json +75 -0
- package/test/resources/9999999/asset/v1/content/assets/808714/get-response.json +3 -3
- package/test/resources/9999999/asset/v1/content/assets/950143/get-response.json +97 -0
- package/test/resources/9999999/asset/v1/content/assets/get-response-customerKey=testExisting_asset.json +1 -1
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN195,196,197,198,199,200,201,202,203,210,211,212,213,3.json +78 -2
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14,193,194,15,195,196,197,198,199,200,201,202,203,210,211,212,213,3,207,208,209,5,214,4,215,216.json +370 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14,193,194,15,195,196,197,198,199,200,201,202,203,210,211,212,213,3,215,216,217,218,219,220,221,222.json +243 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,207,208,209,5.json +229 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1.json +98 -1
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN217,218,219,220,221,222,223,224,225,226,227,228.json +7 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN223,224,225,226,227,228,214,4.json +35 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN223,224,225,226,227,228.json +7 -0
- package/test/resources/9999999/asset/v1/content/assets/query/{post-response-customerKey=mcdev-issue-1157.json → post-response-customerKey=testExisting_asset_htmlblock.json} +2 -2
- package/test/resources/9999999/automation/v1/queries/get-response-Name=testExisting_query.json +24 -0
- package/test/resources/9999999/automation/v1/scripts/get-response-name=testExisting_script.json +17 -0
- package/test/resources/9999999/automation/v1/scripts/get-response.json +2 -2
- package/test/resources/9999999/dataExtension/retrieve-CustomerKey=testNew_event_withSchema-response.xml +50 -0
- package/test/resources/9999999/dataExtension/retrieve-createdViaEvent-response.xml +50 -0
- package/test/resources/9999999/dataExtension/retrieve-response.xml +48 -0
- package/test/resources/9999999/dataExtension/retrieve_event_withSchema-expected.json +219 -0
- package/test/resources/9999999/dataExtension/update-afterCreatedViaEvent-response.xml +55 -0
- package/test/resources/9999999/dataExtension/update-callout-afterCreatedViaEvent-expected.xml +1 -0
- package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_event_withSchema-response.xml +461 -0
- package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKeyINtestExisting_dataExtension,testNew_dataExtension-response.xml +133 -0
- package/test/resources/9999999/dataExtensionField/retrieve-response.xml +870 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=asset-shared-QAA-response.xml +70 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=asset-shared-response.xml +70 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=journey-response.xml +48 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-sha,automatio,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,triggered,triggered,useriniti-response.xml +519 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-sha,dataexten,salesforc,shared_da,shared_da,shared_sa,synchroni,automatio,useriniti,journey,mysubs,list,publicati,queryacti,ssjsactiv,triggered,triggered-response.xml +519 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,journey-response.xml +92 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +115 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,ssjsactivity-response.xml +92 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared-QAA-response.xml +70 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +431 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINautomations,queryactivity-response.xml +70 -0
- package/test/resources/9999999/dataFolder/{retrieve-response.xml → retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +32 -119
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINdataextension,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +117 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINhidden,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml +46 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +251 -0
- package/test/resources/9999999/dataFolder/retrieve-response-.xml +519 -0
- package/test/resources/9999999/event/build-expected.json +227 -0
- package/test/resources/9999999/event/get-expected.json +234 -0
- package/test/resources/9999999/event/post_withExistingDE-callout-expected.json +20 -0
- package/test/resources/9999999/event/post_withExistingDE-expected.json +23 -0
- package/test/resources/9999999/event/post_withSchema-callout-expected.json +199 -0
- package/test/resources/9999999/event/post_withSchema-expected.json +234 -0
- package/test/resources/9999999/event/put-callout-expected.json +204 -0
- package/test/resources/9999999/event/put-expected.json +233 -0
- package/test/resources/9999999/event/template-expected.json +227 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/get-response.json +252 -2
- package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/delete-response.txt +0 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/put-response.json +242 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/post_withExistingDE-response.json +28 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/post_withSchema-response.json +243 -0
- package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/delete-response.txt +1 -0
- package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/get-response.json +4 -4
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Quicksend/get-response.json +4 -4
- package/test/resources/9999999/interaction/v1/interactions/publishAsync/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/post-response.json +4 -0
- package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-failed.json +34 -0
- package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-success.json +5 -0
- package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-successWarnings.json +36 -0
- package/test/resources/9999999/journey/build-expected.json +5 -5
- package/test/resources/9999999/journey/get-multistep-expected.json +1 -1
- package/test/resources/9999999/journey/get-quicksend-expected.json +5 -5
- package/test/resources/9999999/journey/get-quicksend-rcb-id-expected.json +1 -1
- package/test/resources/9999999/journey/get-quicksend-rcb-key-expected.json +7 -7
- package/test/resources/9999999/journey/get-quicksend-rcb-name-expected.json +1 -1
- package/test/resources/9999999/journey/post-expected.json +1 -1
- package/test/resources/9999999/journey/publish-callout-expected.json +1 -0
- package/test/resources/9999999/journey/put-expected.json +1 -1
- package/test/resources/9999999/journey/template-expected.json +5 -5
- package/test/resources/9999999/mobileKeyword/build-expected.json +1 -0
- package/test/resources/9999999/mobileKeyword/get-expected.json +1 -0
- package/test/resources/9999999/mobileKeyword/post-create-expected.json +1 -0
- package/test/resources/9999999/mobileKeyword/template-expected.json +1 -0
- package/test/resources/{1111111/accountUser/retrieve-CustomerKey=testExisting_userANDActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml → 9999999/queryDefinition/retrieve-CustomerKey=badANDStatus=Active-response.xml} +10 -11
- package/test/resources/9999999/script/get_ampincluded-rcb-key-expected.html +2 -2
- package/test/resources/9999999/script/get_ampscript-expected.html +1 -0
- package/test/resources/9999999/script/get_ampscript-rcb-id-expected.html +1 -0
- package/test/resources/9999999/script/get_ampscript-rcb-key-expected.html +3 -2
- package/test/resources/9999999/script/get_ampscript-rcb-name-expected.html +3 -0
- package/test/resources/9999999/script/get_mixed-expected.html +2 -2
- package/test/resources/9999999/script/get_mixed-rcb-key-expected.html +2 -2
- package/test/resources/9999999/senderProfile/get-rcb-key-expected.json +4 -4
- package/test/resources/9999999/senderProfile/retrieve-response.xml +1 -1
- package/test/resources/9999999/triggeredSend/get-rcb-key-expected.json +4 -4
- package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +1 -1
- package/test/type.asset.test.js +189 -42
- package/test/type.automation.test.js +135 -59
- package/test/type.dataExtension.test.js +4 -4
- package/test/type.dataExtract.test.js +4 -4
- package/test/type.emailSend.test.js +3 -3
- package/test/type.event.test.js +286 -7
- package/test/type.journey.test.js +335 -9
- package/test/type.query.test.js +33 -29
- package/test/type.script.test.js +61 -11
- package/test/type.senderProfile.test.js +36 -3
- package/test/type.transactionalEmail.test.js +3 -3
- package/test/type.triggeredSend.test.js +75 -6
- package/test/type.user.test.js +1 -1
- package/test/utils.js +31 -9
- package/tsconfig.json +6 -1
- package/{jsconfig.json → tsconfig.npmScripts.json} +1 -1
- package/tsconfig.precommit.json +26 -0
- package/types/mcdev.d.js +39 -14
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-response.xml → retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=falseANDEmaillike@-response.xml → retrieve-ActiveFlag=falseANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-response.xml → retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml → retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDEmaillike@-response.xml → retrieve-ActiveFlag=trueANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/businessUnit/{retrieve-ID=1111111-response.xml → retrieve-ID=1111111-QAA-response.xml} +0 -0
- /package/test/resources/1111111/dataFolder/{retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml → retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +0 -0
- /package/test/resources/1111111/dataFolder/{retrieve-response.xml → retrieve-response-.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=asset-sharedORContentType=asset-response.xml → retrieve-ContentTypeINasset,asset-shared-response.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=contextual_suppression_listORContentType=publicationORContentType=suppression_listORContentType=mysubsORContentType=list-response.xml → retrieve-ContentTypeINcontextual_suppression_list,list,mysubs,publication,suppression_list-response.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml → retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=triggered_send_journeybuilderORContentType=triggered_sendORContentType=hidden-response.xml → retrieve-ContentTypeINhidden,triggered_send,triggered_send_journeybuilder-response.xml} +0 -0
package/lib/util/devops.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import File from './file.js';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import
|
|
3
|
+
import { select, confirm, Separator } from '@inquirer/prompts';
|
|
4
4
|
import { Util } from './util.js';
|
|
5
5
|
import Cli from './cli.js';
|
|
6
6
|
import { simpleGit } from 'simple-git';
|
|
@@ -70,23 +70,24 @@ const DevOps = {
|
|
|
70
70
|
'--skip=1',
|
|
71
71
|
`-${commitHistory || properties.options.deployment.commitHistory || 10}`,
|
|
72
72
|
]);
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
/** @type {({value: string, name?: string, description?: string, disabled?: boolean | string} | Separator)[]} */
|
|
74
|
+
const choices = commits.all.map((commit) => ({
|
|
75
|
+
name:
|
|
76
|
+
commit.date.split('T').join(' ').split('+')[0] +
|
|
77
|
+
' / ' +
|
|
78
|
+
commit.message +
|
|
79
|
+
' / ' +
|
|
80
|
+
commit.author_name,
|
|
75
81
|
value: commit.hash,
|
|
76
82
|
}));
|
|
77
|
-
|
|
78
|
-
display.push(new inquirer.Separator(' ==== '));
|
|
83
|
+
choices.push(new Separator(' ==== '));
|
|
79
84
|
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
choices: display,
|
|
87
|
-
},
|
|
88
|
-
]);
|
|
89
|
-
range = `${responses.commit}..HEAD`;
|
|
85
|
+
const baseCommit = await select({
|
|
86
|
+
message: 'Select base commit for comparison with current commit',
|
|
87
|
+
pageSize: 10,
|
|
88
|
+
choices: choices,
|
|
89
|
+
});
|
|
90
|
+
range = `${baseCommit}..HEAD`;
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
const metadata = {};
|
|
@@ -99,7 +100,8 @@ const DevOps = {
|
|
|
99
100
|
/**
|
|
100
101
|
* @type {DeltaPkgItem[]}
|
|
101
102
|
*/
|
|
102
|
-
|
|
103
|
+
// first, process everything that can be done synchronously here
|
|
104
|
+
const deltaSync = (await git.diffSummary([range])).files
|
|
103
105
|
// populate additional info for all changed files
|
|
104
106
|
.map((/** @type {DeltaPkgItem} */ file) => {
|
|
105
107
|
// If file was moved it's path needs to be parsed
|
|
@@ -146,8 +148,13 @@ const DevOps = {
|
|
|
146
148
|
);
|
|
147
149
|
return false;
|
|
148
150
|
}
|
|
149
|
-
})
|
|
150
|
-
|
|
151
|
+
});
|
|
152
|
+
// second, we need to do asynchronous file operations
|
|
153
|
+
/**
|
|
154
|
+
* @type {DeltaPkgItem[]}
|
|
155
|
+
*/
|
|
156
|
+
const delta = await Promise.all(
|
|
157
|
+
deltaSync.map(async (/** @type {DeltaPkgItem} */ file) => {
|
|
151
158
|
// Gets external key based on file name und the assumption that filename = externalKey
|
|
152
159
|
if (file.type === 'folder') {
|
|
153
160
|
file.externalKey = null;
|
|
@@ -206,7 +213,8 @@ const DevOps = {
|
|
|
206
213
|
}
|
|
207
214
|
}
|
|
208
215
|
return file;
|
|
209
|
-
})
|
|
216
|
+
})
|
|
217
|
+
);
|
|
210
218
|
if (
|
|
211
219
|
!gitActionsCounter['add/update'] &&
|
|
212
220
|
!gitActionsCounter.move &&
|
|
@@ -286,21 +294,17 @@ const DevOps = {
|
|
|
286
294
|
}
|
|
287
295
|
}
|
|
288
296
|
|
|
289
|
-
let
|
|
297
|
+
let isPurgeDeployFolder;
|
|
290
298
|
if (!Util.skipInteraction) {
|
|
291
299
|
// deploy folder is in targets for definition creation
|
|
292
300
|
// recommend to purge their content first
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?',
|
|
299
|
-
default: true,
|
|
300
|
-
},
|
|
301
|
-
]);
|
|
301
|
+
isPurgeDeployFolder = await confirm({
|
|
302
|
+
message:
|
|
303
|
+
'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?',
|
|
304
|
+
default: true,
|
|
305
|
+
});
|
|
302
306
|
}
|
|
303
|
-
if (Util.skipInteraction ||
|
|
307
|
+
if (Util.skipInteraction || isPurgeDeployFolder) {
|
|
304
308
|
// Clear output folder structure for selected sub-type
|
|
305
309
|
for (const buObject of Object.values(buObjects)) {
|
|
306
310
|
await File.remove(
|
|
@@ -317,7 +321,7 @@ const DevOps = {
|
|
|
317
321
|
const copied = delta
|
|
318
322
|
.filter((file) => !file.file.endsWith('.md')) // filter documentation files
|
|
319
323
|
.map((file) =>
|
|
320
|
-
File.
|
|
324
|
+
File.copyFileSimple(
|
|
321
325
|
file.file,
|
|
322
326
|
path
|
|
323
327
|
.normalize(file.file)
|
|
@@ -489,21 +493,17 @@ const DevOps = {
|
|
|
489
493
|
(Array.isArray(properties.directories.templateBuilds) &&
|
|
490
494
|
properties.directories.templateBuilds.includes(properties.directories.deploy))
|
|
491
495
|
) {
|
|
492
|
-
let
|
|
496
|
+
let isPurgeDeployFolder;
|
|
493
497
|
if (!skipInteraction) {
|
|
494
498
|
// deploy folder is in targets for definition creation
|
|
495
499
|
// recommend to purge their content first
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?',
|
|
502
|
-
default: true,
|
|
503
|
-
},
|
|
504
|
-
]);
|
|
500
|
+
isPurgeDeployFolder = await confirm({
|
|
501
|
+
message:
|
|
502
|
+
'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?',
|
|
503
|
+
default: true,
|
|
504
|
+
});
|
|
505
505
|
}
|
|
506
|
-
if (skipInteraction ||
|
|
506
|
+
if (skipInteraction || isPurgeDeployFolder) {
|
|
507
507
|
// Clear output folder structure for selected sub-type
|
|
508
508
|
await File.remove(File.normalizePath([properties.directories.deploy]));
|
|
509
509
|
}
|
|
@@ -561,7 +561,6 @@ const DevOps = {
|
|
|
561
561
|
for (let i = 1; i < tabled.length; i++) {
|
|
562
562
|
for (let field of tabled[i]) {
|
|
563
563
|
if (field !== '') {
|
|
564
|
-
// @ts-expect-error bad typing in jsonToTable
|
|
565
564
|
field = field === true ? '✓' : field === false ? '✗' : field;
|
|
566
565
|
output += `| ${field} `;
|
|
567
566
|
}
|
package/lib/util/file.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
/* eslint-disable no-control-regex */
|
|
2
1
|
'use strict';
|
|
3
|
-
|
|
4
2
|
import fs from 'fs-extra';
|
|
5
3
|
|
|
6
4
|
import path from 'node:path';
|
|
@@ -50,7 +48,7 @@ const File = {
|
|
|
50
48
|
* @param {string} to - full filepath including name where file should go
|
|
51
49
|
* @returns {Promise.<{status:'ok'|'skipped'|'failed', statusMessage:string, file:string}>} - results object
|
|
52
50
|
*/
|
|
53
|
-
async
|
|
51
|
+
async copyFileSimple(from, to) {
|
|
54
52
|
try {
|
|
55
53
|
await fs.copy(from, to);
|
|
56
54
|
return { status: 'ok', statusMessage: null, file: from };
|
|
@@ -321,6 +319,7 @@ const File = {
|
|
|
321
319
|
|
|
322
320
|
// save prettier errror into log file
|
|
323
321
|
// Note: we have to filter color codes from prettier's error message before saving it to file
|
|
322
|
+
/* eslint-disable no-control-regex */
|
|
324
323
|
this.writeToFile(
|
|
325
324
|
directory,
|
|
326
325
|
filename + '.error',
|
|
@@ -331,6 +330,7 @@ const File = {
|
|
|
331
330
|
''
|
|
332
331
|
)}`
|
|
333
332
|
);
|
|
333
|
+
/* eslint-enable no-control-regex */
|
|
334
334
|
|
|
335
335
|
formatted = content;
|
|
336
336
|
}
|
|
@@ -371,7 +371,7 @@ const File = {
|
|
|
371
371
|
* @param {string | string[]} directory directory where the file is stored
|
|
372
372
|
* @param {string} filename name of the file without '.json' ending
|
|
373
373
|
* @param {boolean} cleanPath filters illegal chars if true
|
|
374
|
-
* @returns {Promise.<object
|
|
374
|
+
* @returns {Promise.<object | object | void>} Promise or JSON object depending on if async or not; void on error
|
|
375
375
|
*/
|
|
376
376
|
readJSONFile: async function (directory, filename, cleanPath) {
|
|
377
377
|
try {
|
|
@@ -409,11 +409,8 @@ const File = {
|
|
|
409
409
|
try {
|
|
410
410
|
directory = this.filterIllegalPathChars(this.normalizePath(directory));
|
|
411
411
|
filename = this.filterIllegalFilenames(filename);
|
|
412
|
-
// @ts-expect-error
|
|
413
|
-
return
|
|
414
|
-
path.join(directory, filename + '.' + filetype),
|
|
415
|
-
encoding || 'utf8'
|
|
416
|
-
);
|
|
412
|
+
// @ts-expect-error somehow, the typing for fs-extra is not correct
|
|
413
|
+
return fs.readFile(path.join(directory, filename + '.' + filetype), encoding || 'utf8');
|
|
417
414
|
} catch (ex) {
|
|
418
415
|
Util.logger.debug('File.readFilteredFilename:: error | ' + ex.message);
|
|
419
416
|
}
|
|
@@ -574,6 +571,6 @@ const File = {
|
|
|
574
571
|
}
|
|
575
572
|
},
|
|
576
573
|
};
|
|
577
|
-
const FileFs = { ...fs, ...File };
|
|
578
574
|
|
|
575
|
+
const FileFs = Object.assign(fs, File);
|
|
579
576
|
export default FileFs;
|
package/lib/util/init.config.js
CHANGED
|
@@ -4,7 +4,7 @@ import Cli from './cli.js';
|
|
|
4
4
|
import File from './file.js';
|
|
5
5
|
import config from './config.js';
|
|
6
6
|
import { Util } from './util.js';
|
|
7
|
-
import
|
|
7
|
+
import { confirm } from '@inquirer/prompts';
|
|
8
8
|
import path from 'node:path';
|
|
9
9
|
import semver from 'semver';
|
|
10
10
|
import { fileURLToPath } from 'node:url';
|
|
@@ -407,15 +407,11 @@ const Init = {
|
|
|
407
407
|
`- ✋ ${fileName} found with differences to the new standard version. We recommend updating it.`
|
|
408
408
|
);
|
|
409
409
|
if (!Util.skipInteraction) {
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
default: true,
|
|
416
|
-
},
|
|
417
|
-
]);
|
|
418
|
-
if (!responses.overrideFile) {
|
|
410
|
+
const overrideFile = await confirm({
|
|
411
|
+
message: 'Would you like to update (override) it?',
|
|
412
|
+
default: true,
|
|
413
|
+
});
|
|
414
|
+
if (!overrideFile) {
|
|
419
415
|
// skip override without error
|
|
420
416
|
return true;
|
|
421
417
|
}
|
package/lib/util/init.git.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import File from './file.js';
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import { confirm, input } from '@inquirer/prompts';
|
|
5
5
|
import { Util } from './util.js';
|
|
6
6
|
import commandExists from 'command-exists';
|
|
7
7
|
import { simpleGit } from 'simple-git';
|
|
@@ -100,18 +100,14 @@ const Init = {
|
|
|
100
100
|
Util.logger.info(
|
|
101
101
|
`Your remote Git repository is still empty and ready to store your initial backup. Hint: This is the server version of the repo which you share with your team.`
|
|
102
102
|
);
|
|
103
|
-
let
|
|
103
|
+
let gitPush;
|
|
104
104
|
if (!skipInteraction) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
message: `Would you like to 'push' your backup to the remote Git repo?`,
|
|
110
|
-
default: true,
|
|
111
|
-
},
|
|
112
|
-
]);
|
|
105
|
+
gitPush = await confirm({
|
|
106
|
+
message: `Would you like to 'push' your backup to the remote Git repo?`,
|
|
107
|
+
default: true,
|
|
108
|
+
});
|
|
113
109
|
}
|
|
114
|
-
if (skipInteraction?.gitPush === 'true' ||
|
|
110
|
+
if (skipInteraction?.gitPush === 'true' || gitPush) {
|
|
115
111
|
Util.execSync('git', ['push', '-u', 'origin', 'master']);
|
|
116
112
|
}
|
|
117
113
|
} else if (remoteBranchesExist === true) {
|
|
@@ -129,49 +125,42 @@ const Init = {
|
|
|
129
125
|
async _addGitRemote() {
|
|
130
126
|
const skipInteraction = Util.skipInteraction;
|
|
131
127
|
// #1 ask if the user wants to do it now
|
|
132
|
-
let
|
|
128
|
+
let gitOriginKnown;
|
|
133
129
|
if (!skipInteraction) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
message: `Do you know the remote/clone URL of your Git repo (starts with ssh:// or http:// and ends on '.git')?`,
|
|
139
|
-
default: true,
|
|
140
|
-
},
|
|
141
|
-
]);
|
|
130
|
+
gitOriginKnown = await confirm({
|
|
131
|
+
message: `Do you know the remote/clone URL of your Git repo (starts with ssh:// or http:// and ends on '.git')?`,
|
|
132
|
+
default: true,
|
|
133
|
+
});
|
|
142
134
|
}
|
|
143
|
-
if (skipInteraction ||
|
|
135
|
+
if (skipInteraction || gitOriginKnown) {
|
|
144
136
|
// #2 if yes, guide the user to input the right url
|
|
145
|
-
|
|
137
|
+
|
|
138
|
+
let answers = {};
|
|
146
139
|
if (skipInteraction) {
|
|
147
|
-
|
|
140
|
+
answers = skipInteraction;
|
|
148
141
|
} else {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
} else {
|
|
164
|
-
return `Your Git Remote URL should end with '.git'`;
|
|
165
|
-
}
|
|
166
|
-
},
|
|
142
|
+
answers.gitRemoteUrl = await input({
|
|
143
|
+
message: 'Git Remote URL',
|
|
144
|
+
validate: (value) => {
|
|
145
|
+
value = value.trim();
|
|
146
|
+
if (!value || value.length < 10) {
|
|
147
|
+
return 'Please enter a valid remote URL';
|
|
148
|
+
} else if (!value.startsWith('http') && !value.startsWith('ssh')) {
|
|
149
|
+
return `Your Git Remote URL should start with 'http' or 'ssh'`;
|
|
150
|
+
} else if (value.endsWith('.git')) {
|
|
151
|
+
// all good
|
|
152
|
+
return true;
|
|
153
|
+
} else {
|
|
154
|
+
return `Your Git Remote URL should end with '.git'`;
|
|
155
|
+
}
|
|
167
156
|
},
|
|
168
|
-
|
|
157
|
+
});
|
|
169
158
|
}
|
|
170
|
-
|
|
171
|
-
if (typeof
|
|
172
|
-
|
|
173
|
-
Util.execSync('git', ['remote', 'add', 'origin',
|
|
174
|
-
return
|
|
159
|
+
|
|
160
|
+
if (typeof answers.gitRemoteUrl === 'string') {
|
|
161
|
+
answers.gitRemoteUrl = answers.gitRemoteUrl.trim();
|
|
162
|
+
Util.execSync('git', ['remote', 'add', 'origin', answers.gitRemoteUrl]);
|
|
163
|
+
return answers.gitRemoteUrl.split('/').pop().split('.')[0];
|
|
175
164
|
}
|
|
176
165
|
}
|
|
177
166
|
},
|
|
@@ -187,6 +176,7 @@ const Init = {
|
|
|
187
176
|
`Please confirm your Git user name & email. It should be in the format 'FirstName LastName' and 'your.email@accenture.com'. The current (potentially wrong) values are provided as default. If correct, confirm with ENTER, otherwise please update:`
|
|
188
177
|
);
|
|
189
178
|
let responses;
|
|
179
|
+
|
|
190
180
|
/* eslint-disable unicorn/prefer-ternary */
|
|
191
181
|
if (skipInteraction) {
|
|
192
182
|
responses = {
|
|
@@ -194,10 +184,8 @@ const Init = {
|
|
|
194
184
|
email: gitUser['user.email'],
|
|
195
185
|
};
|
|
196
186
|
} else {
|
|
197
|
-
responses =
|
|
198
|
-
{
|
|
199
|
-
type: 'input',
|
|
200
|
-
name: 'name',
|
|
187
|
+
responses = {
|
|
188
|
+
name: await input({
|
|
201
189
|
message: 'Git user.name',
|
|
202
190
|
default: gitUser['user.name'] || null,
|
|
203
191
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
@@ -212,10 +200,8 @@ const Init = {
|
|
|
212
200
|
}
|
|
213
201
|
return true;
|
|
214
202
|
},
|
|
215
|
-
},
|
|
216
|
-
{
|
|
217
|
-
type: 'input',
|
|
218
|
-
name: 'email',
|
|
203
|
+
}),
|
|
204
|
+
email: await input({
|
|
219
205
|
message: 'Git user.email',
|
|
220
206
|
default: gitUser['user.email'] || null,
|
|
221
207
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
@@ -228,8 +214,8 @@ const Init = {
|
|
|
228
214
|
}
|
|
229
215
|
return true;
|
|
230
216
|
},
|
|
231
|
-
},
|
|
232
|
-
|
|
217
|
+
}),
|
|
218
|
+
};
|
|
233
219
|
}
|
|
234
220
|
/* eslint-enable unicorn/prefer-ternary */
|
|
235
221
|
|
package/lib/util/init.js
CHANGED
|
@@ -5,7 +5,7 @@ import config from './config.js';
|
|
|
5
5
|
import InitGit from './init.git.js';
|
|
6
6
|
import InitNpm from './init.npm.js';
|
|
7
7
|
import InitConfig from './init.config.js';
|
|
8
|
-
import
|
|
8
|
+
import { confirm, input, select } from '@inquirer/prompts';
|
|
9
9
|
import { Util } from './util.js';
|
|
10
10
|
import fs from 'node:fs';
|
|
11
11
|
import path from 'node:path';
|
|
@@ -132,7 +132,7 @@ const Init = {
|
|
|
132
132
|
// add-credential mode
|
|
133
133
|
Util.logger.warn(Util.configFileName + ' found in root');
|
|
134
134
|
|
|
135
|
-
let
|
|
135
|
+
let isAddCredential;
|
|
136
136
|
if (skipInteraction) {
|
|
137
137
|
if (
|
|
138
138
|
skipInteraction.client_id &&
|
|
@@ -151,17 +151,13 @@ const Init = {
|
|
|
151
151
|
);
|
|
152
152
|
}
|
|
153
153
|
} else {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
message: 'Do you want to add another credential instead?',
|
|
159
|
-
default: false,
|
|
160
|
-
},
|
|
161
|
-
]);
|
|
154
|
+
isAddCredential = await confirm({
|
|
155
|
+
message: 'Do you want to add another credential instead?',
|
|
156
|
+
default: false,
|
|
157
|
+
});
|
|
162
158
|
}
|
|
163
159
|
let credentialName;
|
|
164
|
-
if (skipInteraction ||
|
|
160
|
+
if (skipInteraction || isAddCredential) {
|
|
165
161
|
credentialName = await Cli.addExtraCredential(properties);
|
|
166
162
|
}
|
|
167
163
|
if (credentialName) {
|
|
@@ -224,29 +220,22 @@ const Init = {
|
|
|
224
220
|
return;
|
|
225
221
|
}
|
|
226
222
|
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
]);
|
|
236
|
-
if (responses.isJoin) {
|
|
237
|
-
const gitRepoQs = await inquirer.prompt([
|
|
238
|
-
{
|
|
239
|
-
type: 'input',
|
|
240
|
-
name: 'gitRepoUrl',
|
|
223
|
+
const isJoin = await confirm({
|
|
224
|
+
message:
|
|
225
|
+
'Do you want to join an existing project for which you have a Git-Repository URL?',
|
|
226
|
+
default: true,
|
|
227
|
+
});
|
|
228
|
+
if (isJoin) {
|
|
229
|
+
const gitRepoQs = {
|
|
230
|
+
gitRepoUrl: await input({
|
|
241
231
|
message: 'Please enter the Git-Repository URL',
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
type: 'input',
|
|
245
|
-
name: 'gitBranch',
|
|
232
|
+
}),
|
|
233
|
+
gitBranch: await input({
|
|
246
234
|
message:
|
|
247
235
|
'If you were asked to work on a specific branch, please enter it now (or leave empty for default)',
|
|
248
|
-
},
|
|
249
|
-
|
|
236
|
+
}),
|
|
237
|
+
};
|
|
238
|
+
|
|
250
239
|
const repoName = gitRepoQs.gitRepoUrl.split('/').pop().replace('.git', '');
|
|
251
240
|
// clone repo into current folder
|
|
252
241
|
Util.logger.info(
|
|
@@ -330,15 +319,10 @@ const Init = {
|
|
|
330
319
|
);
|
|
331
320
|
}
|
|
332
321
|
} else {
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
message: 'Please select your development business unit:',
|
|
338
|
-
choices: businessUnits.map((bu) => ({ name: bu, value: bu })),
|
|
339
|
-
},
|
|
340
|
-
]);
|
|
341
|
-
sourceBuName = responses.developmentBu;
|
|
322
|
+
sourceBuName = await select({
|
|
323
|
+
message: 'Please select your development business unit:',
|
|
324
|
+
choices: businessUnits.map((bu) => ({ name: bu, value: bu })),
|
|
325
|
+
});
|
|
342
326
|
}
|
|
343
327
|
// set source list
|
|
344
328
|
properties.marketList['deployment-source'][firstCredentialName + '/' + sourceBuName] =
|
|
@@ -362,18 +346,14 @@ const Init = {
|
|
|
362
346
|
*/
|
|
363
347
|
async _downloadAllBUs(bu, gitStatus) {
|
|
364
348
|
const skipInteraction = Util.skipInteraction;
|
|
365
|
-
let
|
|
349
|
+
let initialRetrieveAll;
|
|
366
350
|
if (!skipInteraction) {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
message: 'Do you want to start downloading all Business Units (recommended)?',
|
|
372
|
-
default: true,
|
|
373
|
-
},
|
|
374
|
-
]);
|
|
351
|
+
initialRetrieveAll = await confirm({
|
|
352
|
+
message: 'Do you want to start downloading all Business Units (recommended)?',
|
|
353
|
+
default: true,
|
|
354
|
+
});
|
|
375
355
|
}
|
|
376
|
-
if (skipInteraction?.downloadBUs === 'true' ||
|
|
356
|
+
if (skipInteraction?.downloadBUs === 'true' || initialRetrieveAll) {
|
|
377
357
|
Util.execSync('mcdev', ['retrieve', bu]);
|
|
378
358
|
|
|
379
359
|
if (gitStatus === 'init') {
|
|
@@ -479,15 +459,11 @@ const Init = {
|
|
|
479
459
|
cloudServiceFound = true;
|
|
480
460
|
}
|
|
481
461
|
if (cloudServiceFound) {
|
|
482
|
-
const
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
default: false,
|
|
488
|
-
},
|
|
489
|
-
]);
|
|
490
|
-
if (!responses.ignoreCloudWarning) {
|
|
462
|
+
const ignoreCloudWarning = await confirm({
|
|
463
|
+
message: 'Do you want to continue anyways?',
|
|
464
|
+
default: false,
|
|
465
|
+
});
|
|
466
|
+
if (!ignoreCloudWarning) {
|
|
491
467
|
Util.logger.error('Exiting due to cloud service warning');
|
|
492
468
|
return false;
|
|
493
469
|
}
|