From 57a798d201d81bf1444d2f57157b95e2ef8529a4 Mon Sep 17 00:00:00 2001 From: mshanemc Date: Fri, 17 May 2024 11:03:06 -0500 Subject: [PATCH] feat: rename presets property --- HANDBOOK.md | 6 ++--- src/Presets.md | 2 +- src/registry/variants.ts | 22 ++++++++++++------- .../preset-PermSet/sfdx-project.json | 2 +- .../preset-decomposeLabels/sfdx-project.json | 2 +- .../preset-sharingRules/sfdx-project.json | 4 ++-- .../preset-workflow-mpd/sfdx-project.json | 10 ++++----- .../preset-workflow/sfdx-project.json | 4 ++-- 8 files changed, 29 insertions(+), 23 deletions(-) diff --git a/HANDBOOK.md b/HANDBOOK.md index da0f909dec..20c662365a 100644 --- a/HANDBOOK.md +++ b/HANDBOOK.md @@ -156,13 +156,13 @@ It's possible that the registry isn't what a user wants There are two options available if you're in an sfdx project. - `registryCustomizations`: add your own partial of the the registry that'll be merged into the registry. It's a json object just like the registry itself. -- `registryPresets`: SDR defines "preset" registryCustomizations and you say which ones you want applied. Each one is a partial, and you can have any or all of them by listing them. Names correspond to something in src/registry/presets, so your project file could use +- `sourceBehaviorOptions`: SDR defines "preset" registryCustomizations and you say which ones you want applied. Each one is a partial, and you can have any or all of them by listing them. Names correspond to something in src/registry/presets, so your project file could use ```json - "registryPresets": ["decomposePermissionSetBeta", "decomposeSharingRulesBeta"] + "sourceBehaviorOptions": ["decomposePermissionSetBeta", "decomposeSharingRulesBeta"] ``` -if you want only those 2 presets. +if you want only those 2 sourceBehaviorOptions. The naming convention is `decomposeFoo` where `Foo` is the top-level metadata type, and refers to `/presets/Foo.json`. diff --git a/src/Presets.md b/src/Presets.md index 1268a72a7f..793f8701ef 100644 --- a/src/Presets.md +++ b/src/Presets.md @@ -1,4 +1,4 @@ -# Available Registry Presets +# Available sourceBehaviorOptions ## `decomposePermissionSetBeta` diff --git a/src/registry/variants.ts b/src/registry/variants.ts index c606af9a5c..82dab1d2da 100644 --- a/src/registry/variants.ts +++ b/src/registry/variants.ts @@ -23,7 +23,7 @@ export type RegistryLoadInput = { export const getEffectiveRegistry = (input?: RegistryLoadInput): MetadataRegistry => deepFreeze(firstLevelMerge(registryData as MetadataRegistry, loadVariants(input))); -/** read the project to get additional registry customizations and presets */ +/** read the project to get additional registry customizations and sourceBehaviorOptions */ const loadVariants = ({ projectDir }: RegistryLoadInput = {}): MetadataRegistry => { const logger = Logger.childFromRoot('variants'); const projJson = maybeGetProject(projectDir); @@ -35,25 +35,31 @@ const loadVariants = ({ projectDir }: RegistryLoadInput = {}): MetadataRegistry // there might not be any customizations in a project, so we default to the emptyRegistry const customizations = projJson.get('registryCustomizations') ?? emptyRegistry; - const presets = projJson.get('registryPresets') ?? []; + const sourceBehaviorOptions = [ + ...new Set([ + // TODO: deprecated, remove this + ...(projJson.get('registryPresets') ?? []), + ...(projJson.get('sourceBehaviorOptions') ?? []), + ]), + ]; if (Object.keys(customizations.types).length > 0) { logger.debug( `found registryCustomizations for types [${Object.keys(customizations.types).join(',')}] in ${projJson.getPath()}` ); } - if (presets.length > 0) { - logger.debug(`using registryPresets [${presets.join(',')}] in ${projJson.getPath()}`); + if (sourceBehaviorOptions.length > 0) { + logger.debug(`using sourceBehaviorOptions [${sourceBehaviorOptions.join(',')}] in ${projJson.getPath()}`); } - const registryFromPresets = presets.reduce( + const registryFromPresets = sourceBehaviorOptions.reduce( (prev, curr) => firstLevelMerge(prev, loadPreset(curr)), emptyRegistry ); - if (presets.length > 0 || Object.keys(customizations.types).length > 0) { + if (sourceBehaviorOptions.length > 0 || Object.keys(customizations.types).length > 0) { void Lifecycle.getInstance().emitTelemetry({ library: 'SDR', eventName: 'RegistryVariants', - presetCount: presets.length, - presets: presets.join(','), + presetCount: sourceBehaviorOptions.length, + presets: sourceBehaviorOptions.join(','), customizationsCount: Object.keys(customizations.types).length, customizationsTypes: Object.keys(customizations.types).join(','), }); diff --git a/test/snapshot/sampleProjects/preset-PermSet/sfdx-project.json b/test/snapshot/sampleProjects/preset-PermSet/sfdx-project.json index c4b138ba9b..0846b0e9d9 100644 --- a/test/snapshot/sampleProjects/preset-PermSet/sfdx-project.json +++ b/test/snapshot/sampleProjects/preset-PermSet/sfdx-project.json @@ -7,7 +7,7 @@ "path": "force-app" } ], - "registryPresets": ["decomposePermissionSetBeta"], + "sourceBehaviorOptions": ["decomposePermissionSetBeta"], "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "60.0" } diff --git a/test/snapshot/sampleProjects/preset-decomposeLabels/sfdx-project.json b/test/snapshot/sampleProjects/preset-decomposeLabels/sfdx-project.json index bfd4b4b44b..97d16c7028 100644 --- a/test/snapshot/sampleProjects/preset-decomposeLabels/sfdx-project.json +++ b/test/snapshot/sampleProjects/preset-decomposeLabels/sfdx-project.json @@ -7,7 +7,7 @@ "path": "force-app" } ], - "registryPresets": ["decomposeCustomLabelsBeta"], + "sourceBehaviorOptions": ["decomposeCustomLabelsBeta"], "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "60.0" } diff --git a/test/snapshot/sampleProjects/preset-sharingRules/sfdx-project.json b/test/snapshot/sampleProjects/preset-sharingRules/sfdx-project.json index 5ef52f0d37..0bcbc61ffd 100644 --- a/test/snapshot/sampleProjects/preset-sharingRules/sfdx-project.json +++ b/test/snapshot/sampleProjects/preset-sharingRules/sfdx-project.json @@ -7,7 +7,7 @@ "path": "force-app" } ], - "registryPresets": ["decomposeSharingRulesBeta"], "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "52.0" + "sourceApiVersion": "52.0", + "sourceBehaviorOptions": ["decomposeSharingRulesBeta"] } diff --git a/test/snapshot/sampleProjects/preset-workflow-mpd/sfdx-project.json b/test/snapshot/sampleProjects/preset-workflow-mpd/sfdx-project.json index d53f8ded0a..1ee758ba7b 100644 --- a/test/snapshot/sampleProjects/preset-workflow-mpd/sfdx-project.json +++ b/test/snapshot/sampleProjects/preset-workflow-mpd/sfdx-project.json @@ -1,15 +1,15 @@ { + "namespace": "", "packageDirectories": [ { - "path": "force-app", - "default": true + "default": true, + "path": "force-app" }, { "path": "another-package" } ], - "registryPresets": ["decomposeWorkflowBeta"], - "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "60.0" + "sourceApiVersion": "60.0", + "sourceBehaviorOptions": ["decomposeWorkflowBeta"] } diff --git a/test/snapshot/sampleProjects/preset-workflow/sfdx-project.json b/test/snapshot/sampleProjects/preset-workflow/sfdx-project.json index 7c0dceb879..718d775aa6 100644 --- a/test/snapshot/sampleProjects/preset-workflow/sfdx-project.json +++ b/test/snapshot/sampleProjects/preset-workflow/sfdx-project.json @@ -7,7 +7,7 @@ "path": "force-app" } ], - "registryPresets": ["decomposeWorkflowBeta"], "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "60.0" + "sourceApiVersion": "60.0", + "sourceBehaviorOptions": ["decomposeWorkflowBeta"] }