@salesforce/plugin-deploy-retrieve 3.22.15 → 3.22.16

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.
Files changed (3) hide show
  1. package/README.md +17 -17
  2. package/oclif.manifest.json +1325 -1325
  3. package/package.json +4 -4
@@ -1,17 +1,15 @@
1
1
  {
2
2
  "commands": {
3
- "project:delete:source": {
3
+ "project:convert:mdapi": {
4
4
  "aliases": [
5
- "force:source:delete"
5
+ "force:mdapi:convert"
6
6
  ],
7
7
  "args": {},
8
8
  "deprecateAliases": true,
9
- "description": "Use this command to delete components from orgs that don’t have source tracking. To remove deleted items from orgs that have source tracking enabled, \"<%= config.bin %> project deploy start\".\n\nWhen you run this command, both the local source file and the metadata component in the org are deleted.\n\nTo delete multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
9
+ "description": "To use Salesforce CLI to work with components that you retrieved via Metadata API, first convert your files from the metadata format to the source format using this command.\n\nTo convert files from the source format back to the metadata format, run \"sf project convert source\".\n\nTo convert multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
10
10
  "examples": [
11
- "Delete all local Apex source files and all Apex classes from the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
12
- "Delete a specific Apex class and a Profile that has a space in it from your default org; don't prompt for confirmation:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyFabulousApexClass --metadata \"Profile: My Profile\" --no-prompt",
13
- "Run the tests that aren’t in any managed packages as part of the deletion; if the delete succeeds, and the org has source-tracking enabled, update the source tracking information:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests --track-source",
14
- "Delete the Apex source files in a directory and the corresponding components from your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes"
11
+ "Convert metadata formatted files in the specified directory into source formatted files; writes converted files to your default package directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/metadata",
12
+ "Similar to previous example, but writes converted files to the specified output directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/metadata --output-dir path/to/outputdir"
15
13
  ],
16
14
  "flags": {
17
15
  "json": {
@@ -50,149 +48,80 @@
50
48
  "multiple": false,
51
49
  "type": "option"
52
50
  },
53
- "target-org": {
51
+ "root-dir": {
54
52
  "aliases": [
55
- "targetusername",
56
- "u"
53
+ "rootdir"
57
54
  ],
58
- "char": "o",
55
+ "char": "r",
59
56
  "deprecateAliases": true,
60
- "name": "target-org",
61
- "noCacheDefault": true,
57
+ "name": "root-dir",
62
58
  "required": true,
63
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
64
- "hasDynamicHelp": true,
59
+ "summary": "Root directory that contains the Metadata API–formatted metadata.",
60
+ "hasDynamicHelp": false,
65
61
  "multiple": false,
66
62
  "type": "option"
67
63
  },
68
- "check-only": {
64
+ "output-dir": {
69
65
  "aliases": [
70
- "checkonly"
66
+ "outputdir"
71
67
  ],
72
- "char": "c",
68
+ "char": "d",
73
69
  "deprecateAliases": true,
74
- "description": "IMPORTANT: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.\n\nValidates the deleted metadata and runs all Apex tests, but prevents the deletion from being saved to the org.\n\nIf you change a field type from Master-Detail to Lookup or vice versa, that change isn’t supported when using the --check-only flag to test a deletion (validation). This kind of change isn’t supported for test deletions to avoid the risk of data loss or corruption. If a change that isn’t supported for test deletions is included in a deletion package, the test deletion fails and issues an error.\n\nIf your deletion package changes a field type from Master-Detail to Lookup or vice versa, you can still validate the changes prior to deploying to Production by performing a full deletion to another test Sandbox. A full deletion includes a validation of the changes as part of the deletion process.\n\nNote: A Metadata API deletion that includes Master-Detail relationships deletes all detail records in the Recycle Bin in the following cases.\n\n 1. For a deletion with a new Master-Detail field, soft delete (send to the Recycle Bin) all detail records before proceeding to delete the Master-Detail field, or the deletion fails. During the deletion, detail records are permanently deleted from the Recycle Bin and cannot be recovered.\n\n 2. For a deletion that converts a Lookup field relationship to a Master-Detail relationship, detail records must reference a master record or be soft-deleted (sent to the Recycle Bin) for the deletion to succeed. However, a successful deletion permanently deletes any detail records in the Recycle Bin.",
75
- "name": "check-only",
76
- "summary": "Validate delete command but don't delete anything from the org or the local project.",
77
- "allowNo": false,
78
- "type": "boolean"
79
- },
80
- "wait": {
81
- "char": "w",
82
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
83
- "name": "wait",
84
- "summary": "Number of minutes to wait for the command to finish.",
85
- "hasDynamicHelp": true,
86
- "multiple": false,
87
- "type": "option"
88
- },
89
- "tests": {
90
- "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
91
- "helpGroup": "Test",
92
- "name": "tests",
93
- "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
70
+ "name": "output-dir",
71
+ "summary": "Directory to store your files in after they’re converted to source format; can be an absolute or relative path.",
94
72
  "hasDynamicHelp": false,
95
- "multiple": true,
73
+ "multiple": false,
96
74
  "type": "option"
97
75
  },
98
- "test-level": {
99
- "aliases": [
100
- "testlevel"
101
- ],
102
- "char": "l",
103
- "deprecateAliases": true,
104
- "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\nIf you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see “Running Tests in a Deployment” in the Metadata API Developer Guide.",
105
- "helpGroup": "Test",
106
- "name": "test-level",
107
- "summary": "Deployment Apex testing level.",
76
+ "manifest": {
77
+ "char": "x",
78
+ "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
79
+ "name": "manifest",
80
+ "summary": "File path to manifest (package.xml) of metadata types to convert.",
108
81
  "hasDynamicHelp": false,
109
82
  "multiple": false,
110
- "options": [
111
- "NoTestRun",
112
- "RunSpecifiedTests",
113
- "RunLocalTests",
114
- "RunAllTestsInOrg"
115
- ],
116
83
  "type": "option"
117
84
  },
118
- "no-prompt": {
85
+ "metadata-dir": {
119
86
  "aliases": [
120
- "noprompt"
87
+ "metadatapath"
121
88
  ],
122
- "char": "r",
89
+ "char": "p",
123
90
  "deprecateAliases": true,
124
- "name": "no-prompt",
125
- "summary": "Don't prompt for delete confirmation.",
126
- "allowNo": false,
127
- "type": "boolean"
128
- },
129
- "metadata": {
130
- "char": "m",
131
- "description": "If you specify this flag, don’t specify --source-dir.",
132
- "name": "metadata",
133
- "summary": "Metadata components to delete.",
91
+ "description": "The supplied paths can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --manifest or --metadata. If the comma-separated list you’re supplying contains spaces, enclose the entire comma-separated list in one set of double quotes.",
92
+ "exclusive": [
93
+ "manifest",
94
+ "metadata"
95
+ ],
96
+ "name": "metadata-dir",
97
+ "summary": "Root of directory or zip file of metadata formatted files to convert.",
134
98
  "delimiter": ",",
135
99
  "hasDynamicHelp": false,
136
100
  "multiple": true,
137
101
  "type": "option"
138
102
  },
139
- "source-dir": {
140
- "aliases": [
141
- "sourcepath"
103
+ "metadata": {
104
+ "char": "m",
105
+ "exclusive": [
106
+ "manifest",
107
+ "metadatapath"
142
108
  ],
143
- "char": "p",
144
- "deprecateAliases": true,
145
- "description": "The supplied paths can be a single file (in which case the operation is applied to only one file) or a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --metadata.",
146
- "name": "source-dir",
147
- "summary": "Source file paths to delete.",
109
+ "name": "metadata",
110
+ "summary": "Metadata component names to convert.",
148
111
  "delimiter": ",",
149
112
  "hasDynamicHelp": false,
150
113
  "multiple": true,
151
114
  "type": "option"
152
- },
153
- "track-source": {
154
- "aliases": [
155
- "tracksource"
156
- ],
157
- "char": "t",
158
- "deprecateAliases": true,
159
- "exclusive": [
160
- "check-only"
161
- ],
162
- "name": "track-source",
163
- "summary": "If the delete succeeds, update the source tracking information.",
164
- "allowNo": false,
165
- "type": "boolean"
166
- },
167
- "force-overwrite": {
168
- "aliases": [
169
- "forceoverwrite"
170
- ],
171
- "char": "f",
172
- "dependsOn": [
173
- "track-source"
174
- ],
175
- "deprecateAliases": true,
176
- "name": "force-overwrite",
177
- "summary": "Ignore conflict warnings and overwrite changes to the org.",
178
- "allowNo": false,
179
- "type": "boolean"
180
- },
181
- "verbose": {
182
- "name": "verbose",
183
- "summary": "Verbose output of the delete result.",
184
- "allowNo": false,
185
- "type": "boolean"
186
115
  }
187
116
  },
188
- "hasDynamicHelp": true,
117
+ "hasDynamicHelp": false,
189
118
  "hiddenAliases": [],
190
- "id": "project:delete:source",
119
+ "id": "project:convert:mdapi",
191
120
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
192
121
  "pluginName": "@salesforce/plugin-deploy-retrieve",
193
122
  "pluginType": "core",
194
123
  "strict": true,
195
- "summary": "Delete source from your project and from a non-source-tracked org.",
124
+ "summary": "Convert metadata retrieved via Metadata API into the source format used in Salesforce DX projects.",
196
125
  "enableJsonFlag": true,
197
126
  "requiresProject": true,
198
127
  "isESM": true,
@@ -200,35 +129,34 @@
200
129
  "lib",
201
130
  "commands",
202
131
  "project",
203
- "delete",
204
- "source.js"
132
+ "convert",
133
+ "mdapi.js"
205
134
  ],
206
135
  "aliasPermutations": [
207
- "force:source:delete",
208
- "source:force:delete",
209
- "source:delete:force",
210
- "force:delete:source",
211
- "delete:force:source",
212
- "delete:source:force"
136
+ "force:mdapi:convert",
137
+ "mdapi:force:convert",
138
+ "mdapi:convert:force",
139
+ "force:convert:mdapi",
140
+ "convert:force:mdapi",
141
+ "convert:mdapi:force"
213
142
  ],
214
143
  "permutations": [
215
- "project:delete:source",
216
- "delete:project:source",
217
- "delete:source:project",
218
- "project:source:delete",
219
- "source:project:delete",
220
- "source:delete:project"
144
+ "project:convert:mdapi",
145
+ "convert:project:mdapi",
146
+ "convert:mdapi:project",
147
+ "project:mdapi:convert",
148
+ "mdapi:project:convert",
149
+ "mdapi:convert:project"
221
150
  ]
222
151
  },
223
- "project:delete:tracking": {
224
- "aliases": [
225
- "force:source:tracking:clear"
226
- ],
152
+ "project:convert:source-behavior": {
153
+ "aliases": [],
227
154
  "args": {},
228
- "deprecateAliases": true,
229
- "description": "WARNING: This command deletes or overwrites all existing source tracking files. Use with extreme caution.\n\nDeletes all local source tracking information. When you next run 'project deploy preview', Salesforce CLI displays all local and remote files as changed, and any files with the same name are listed as conflicts.",
155
+ "description": "Specifically, this command updates the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file and then converts the associated local source files in your project as needed.\n\nFor example, run this command with the \"--behavior decomposePermissionSetBeta\" flag to start decomposing permission sets when you deploy or retrieve them. Decomposing means breaking up the monolithic metadata API format XML file that corresponds to a metadata component into smaller XML files and directories based on its subtypes. Permission sets are not decomposed by default; you must opt-in to start decomposing them by using this command. When the command finishes, your \"sfdx-project.json\" file is updated to always decompose permission sets, and the existing permission set files in your local package directories are converted into the new decomposed format. You run this command only once for a given behavior change.\n\nFor more information about the possible values for the --behavior flag, see the \"sourceBehaviorOptions\" section in the https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_ws_config.htm topic.",
230
156
  "examples": [
231
- "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
157
+ "Update your Salesforce DX project to decompose custom permission sets:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta",
158
+ "Display what the command would do, but don't change any existing files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run",
159
+ "Keep the temporary directory that contains the interim metadata API formatted files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run --preserve-temp-dir"
232
160
  ],
233
161
  "flags": {
234
162
  "json": {
@@ -246,62 +174,55 @@
246
174
  "multiple": false,
247
175
  "type": "option"
248
176
  },
249
- "api-version": {
250
- "aliases": [
251
- "apiversion"
252
- ],
253
- "deprecateAliases": true,
254
- "description": "Override the api version used for api requests made by this command",
255
- "name": "api-version",
177
+ "behavior": {
178
+ "char": "b",
179
+ "name": "behavior",
180
+ "required": true,
181
+ "summary": "Behavior to enable; the values correspond to the possible values of the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file.",
256
182
  "hasDynamicHelp": false,
257
183
  "multiple": false,
184
+ "options": [
185
+ "decomposeCustomLabelsBeta2",
186
+ "decomposeCustomLabelsBeta",
187
+ "decomposePermissionSetBeta",
188
+ "decomposePermissionSetBeta2",
189
+ "decomposeSharingRulesBeta",
190
+ "decomposeWorkflowBeta",
191
+ "decomposeExternalServiceRegistrationBeta"
192
+ ],
258
193
  "type": "option"
259
194
  },
260
- "loglevel": {
261
- "deprecated": {
262
- "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
263
- },
264
- "hidden": true,
265
- "name": "loglevel",
266
- "hasDynamicHelp": false,
267
- "multiple": false,
268
- "type": "option"
195
+ "dry-run": {
196
+ "name": "dry-run",
197
+ "summary": "Display what the command would do, but don't make any actual changes.",
198
+ "allowNo": false,
199
+ "type": "boolean"
200
+ },
201
+ "preserve-temp-dir": {
202
+ "name": "preserve-temp-dir",
203
+ "summary": "Don't delete the metadata API format temporary directory that this command creates. Useful for debugging.",
204
+ "allowNo": false,
205
+ "type": "boolean"
269
206
  },
270
207
  "target-org": {
271
- "aliases": [
272
- "targetusername",
273
- "u"
274
- ],
275
208
  "char": "o",
276
- "deprecateAliases": true,
277
209
  "name": "target-org",
278
210
  "noCacheDefault": true,
279
- "required": true,
280
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
211
+ "summary": "Username or alias of the target org.",
281
212
  "hasDynamicHelp": true,
282
213
  "multiple": false,
283
214
  "type": "option"
284
- },
285
- "no-prompt": {
286
- "aliases": [
287
- "noprompt"
288
- ],
289
- "char": "p",
290
- "deprecateAliases": true,
291
- "name": "no-prompt",
292
- "summary": "Don't prompt for source tracking override confirmation.",
293
- "allowNo": false,
294
- "type": "boolean"
295
215
  }
296
216
  },
297
217
  "hasDynamicHelp": true,
298
218
  "hiddenAliases": [],
299
- "id": "project:delete:tracking",
219
+ "id": "project:convert:source-behavior",
300
220
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
301
221
  "pluginName": "@salesforce/plugin-deploy-retrieve",
302
222
  "pluginType": "core",
223
+ "state": "beta",
303
224
  "strict": true,
304
- "summary": "Delete all local source tracking information.",
225
+ "summary": "Enable a behavior of your project source files, and then update your Salesforce DX project to implement the behavior.",
305
226
  "enableJsonFlag": true,
306
227
  "requiresProject": true,
307
228
  "isESM": true,
@@ -309,58 +230,29 @@
309
230
  "lib",
310
231
  "commands",
311
232
  "project",
312
- "delete",
313
- "tracking.js"
314
- ],
315
- "aliasPermutations": [
316
- "force:source:tracking:clear",
317
- "source:force:tracking:clear",
318
- "source:tracking:force:clear",
319
- "source:tracking:clear:force",
320
- "force:tracking:source:clear",
321
- "tracking:force:source:clear",
322
- "tracking:source:force:clear",
323
- "tracking:source:clear:force",
324
- "force:tracking:clear:source",
325
- "tracking:force:clear:source",
326
- "tracking:clear:force:source",
327
- "tracking:clear:source:force",
328
- "force:source:clear:tracking",
329
- "source:force:clear:tracking",
330
- "source:clear:force:tracking",
331
- "source:clear:tracking:force",
332
- "force:clear:source:tracking",
333
- "clear:force:source:tracking",
334
- "clear:source:force:tracking",
335
- "clear:source:tracking:force",
336
- "force:clear:tracking:source",
337
- "clear:force:tracking:source",
338
- "clear:tracking:force:source",
339
- "clear:tracking:source:force"
233
+ "convert",
234
+ "source-behavior.js"
340
235
  ],
236
+ "aliasPermutations": [],
341
237
  "permutations": [
342
- "project:delete:tracking",
343
- "delete:project:tracking",
344
- "delete:tracking:project",
345
- "project:tracking:delete",
346
- "tracking:project:delete",
347
- "tracking:delete:project"
238
+ "project:convert:source-behavior",
239
+ "convert:project:source-behavior",
240
+ "convert:source-behavior:project",
241
+ "project:source-behavior:convert",
242
+ "source-behavior:project:convert",
243
+ "source-behavior:convert:project"
348
244
  ]
349
245
  },
350
- "project:generate:manifest": {
246
+ "project:convert:source": {
351
247
  "aliases": [
352
- "force:source:manifest:create"
248
+ "force:source:convert"
353
249
  ],
354
250
  "args": {},
355
251
  "deprecateAliases": true,
356
- "description": "Create a manifest from a list of metadata components (--metadata) or from one or more local directories that contain source files (--source-dir). You can specify either of these flags, not both.\n\nUse --type to specify the type of manifest you want to create. The resulting manifest files have specific names, such as the standard package.xml or destructiveChanges.xml to delete metadata. Valid values for this flag, and their respective file names, are:\n\n * package : package.xml (default)\n * pre : destructiveChangesPre.xml\n * post : destructiveChangesPost.xml\n * destroy : destructiveChanges.xml\n\nSee https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_deleting_files.htm for information about these destructive manifest files.\n\nUse --name to specify a custom name for the generated manifest if the pre-defined ones don’t suit your needs. You can specify either --type or --name, but not both.\n\nTo include multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --include-packages and --source-dir.\n\nTo build a manifest from the metadata in an org, use the --from-org flag. You can combine --from-org with the --metadata flag to include only certain metadata types, or with the --excluded-metadata flag to exclude certain metadata types. When building a manifest from an org, the command makes many concurrent API calls to discover the metadata that exists in the org. To limit the number of concurrent requests, use the SF_LIST_METADATA_BATCH_SIZE environment variable and set it to a size that works best for your org and environment. If you experience timeouts or inconsistent manifest contents, then setting this environment variable can improve accuracy. However, the command takes longer to run because it sends fewer requests at a time.",
252
+ "description": "To convert source-formatted files into the metadata format, so that you can deploy them using Metadata API, run this command. Then deploy the metadata using \"<%= config.bin %> project deploy\".\n\nTo convert Metadata API–formatted files into the source format, run \"<%= config.bin %> project convert mdapi\".\n\nTo specify a package name that includes spaces, enclose the name in single quotes.\n\nTo convert multiple components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
357
253
  "examples": [
358
- "Create a manifest for deploying or retrieving all Apex classes and custom objects:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass --metadata CustomObject",
359
- "Create a manifest for deleting the specified Apex class:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --type destroy",
360
- "Create a manifest for deploying or retrieving all the metadata components in the specified local directory; name the file myNewManifest.xml:\n$ <%= config.bin %> <%= command.id %> --source-dir force-app --name myNewManifest",
361
- "Create a manifest from the metadata components in the specified org and include metadata in any unlocked packages:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --include-packages unlocked",
362
- "Create a manifest from specific metadata types in an org:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --metadata ApexClass,CustomObject,CustomLabels",
363
- "Create a manifest from all metadata components in an org excluding specific metadata types:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --excluded-metadata StandardValueSet"
254
+ "Convert source-formatted files in the specified directory into metadata-formatted files; writes converted files into a new directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/source",
255
+ "Similar to previous example, but writes converted files to the specified output directory and associates the files with the specified package:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/source --output-dir path/to/outputdir --package-name 'My Package'"
364
256
  ],
365
257
  "flags": {
366
258
  "json": {
@@ -385,6 +277,7 @@
385
277
  "deprecateAliases": true,
386
278
  "description": "Override the api version used for api requests made by this command",
387
279
  "name": "api-version",
280
+ "summary": "API Version to use in the generated project's manifest. By default, will use the version from sfdx-project.json",
388
281
  "hasDynamicHelp": false,
389
282
  "multiple": false,
390
283
  "type": "option"
@@ -399,137 +292,92 @@
399
292
  "multiple": false,
400
293
  "type": "option"
401
294
  },
402
- "metadata": {
403
- "char": "m",
404
- "name": "metadata",
405
- "summary": "Names of metadata components to include in the manifest.",
406
- "delimiter": ",",
407
- "hasDynamicHelp": false,
408
- "multiple": true,
409
- "type": "option"
410
- },
411
- "source-dir": {
412
- "aliases": [
413
- "sourcepath"
414
- ],
415
- "char": "p",
416
- "deprecateAliases": true,
417
- "name": "source-dir",
418
- "summary": "Paths to the local source files to include in the manifest.",
419
- "delimiter": ",",
420
- "hasDynamicHelp": false,
421
- "multiple": true,
422
- "type": "option"
423
- },
424
- "name": {
295
+ "root-dir": {
425
296
  "aliases": [
426
- "manifestname"
297
+ "rootdir"
427
298
  ],
428
- "char": "n",
299
+ "char": "r",
429
300
  "deprecateAliases": true,
430
- "exclusive": [
431
- "type"
432
- ],
433
- "name": "name",
434
- "summary": "Name of a custom manifest file to create.",
301
+ "name": "root-dir",
302
+ "summary": "Source directory other than the default package to convert.",
435
303
  "hasDynamicHelp": false,
436
304
  "multiple": false,
437
305
  "type": "option"
438
306
  },
439
- "type": {
307
+ "output-dir": {
440
308
  "aliases": [
441
- "manifesttype"
309
+ "outputdir"
442
310
  ],
443
- "char": "t",
311
+ "char": "d",
444
312
  "deprecateAliases": true,
445
- "exclusive": [
446
- "name"
447
- ],
448
- "name": "type",
449
- "summary": "Type of manifest to create; the type determines the name of the created file.",
450
- "hasDynamicHelp": false,
313
+ "name": "output-dir",
314
+ "summary": "Output directory to store the Metadata API–formatted files in.",
315
+ "default": "metadataPackage_>timestamp<",
316
+ "hasDynamicHelp": true,
451
317
  "multiple": false,
452
- "options": [
453
- "pre",
454
- "post",
455
- "destroy",
456
- "package"
457
- ],
458
318
  "type": "option"
459
319
  },
460
- "include-packages": {
320
+ "package-name": {
461
321
  "aliases": [
462
- "includepackages"
463
- ],
464
- "char": "c",
465
- "dependsOn": [
466
- "from-org"
322
+ "packagename"
467
323
  ],
324
+ "char": "n",
468
325
  "deprecateAliases": true,
469
- "name": "include-packages",
470
- "summary": "Package types (managed, unlocked) whose metadata is included in the manifest; by default, metadata in managed and unlocked packages is excluded. Metadata in unmanaged packages is always included.",
471
- "delimiter": ",",
326
+ "name": "package-name",
327
+ "summary": "Name of the package to associate with the metadata-formatted files.",
472
328
  "hasDynamicHelp": false,
473
- "multiple": true,
474
- "options": [
475
- "managed",
476
- "unlocked"
477
- ],
329
+ "multiple": false,
478
330
  "type": "option"
479
331
  },
480
- "excluded-metadata": {
481
- "name": "excluded-metadata",
482
- "relationships": [
483
- {
484
- "type": "some",
485
- "flags": [
486
- "from-org",
487
- "source-dir"
488
- ]
489
- }
490
- ],
491
- "summary": "Metadata types to exclude when building a manifest from an org. Specify the name of the type, not the name of a specific component.",
492
- "delimiter": ",",
332
+ "manifest": {
333
+ "char": "x",
334
+ "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
335
+ "name": "manifest",
336
+ "summary": "Path to the manifest (package.xml) file that specifies the metadata types to convert.",
493
337
  "hasDynamicHelp": false,
494
- "multiple": true,
338
+ "multiple": false,
495
339
  "type": "option"
496
340
  },
497
- "from-org": {
341
+ "source-dir": {
498
342
  "aliases": [
499
- "fromorg"
343
+ "sourcepath"
500
344
  ],
345
+ "char": "p",
501
346
  "deprecateAliases": true,
347
+ "description": "The supplied paths can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --manifest or --metadata.",
502
348
  "exclusive": [
503
- "source-dir"
349
+ "manifest",
350
+ "metadata"
504
351
  ],
505
- "name": "from-org",
506
- "summary": "Username or alias of the org that contains the metadata components from which to build a manifest.",
352
+ "name": "source-dir",
353
+ "summary": "Paths to the local source files to convert.",
354
+ "delimiter": ",",
507
355
  "hasDynamicHelp": false,
508
- "multiple": false,
356
+ "multiple": true,
509
357
  "type": "option"
510
358
  },
511
- "output-dir": {
512
- "aliases": [
513
- "outputdir",
514
- "o"
359
+ "metadata": {
360
+ "char": "m",
361
+ "exclusive": [
362
+ "manifest",
363
+ "sourcepath"
515
364
  ],
516
- "char": "d",
517
- "deprecateAliases": true,
518
- "name": "output-dir",
519
- "summary": "Directory to save the created manifest.",
365
+ "name": "metadata",
366
+ "summary": "Metadata component names to convert.",
367
+ "delimiter": ",",
520
368
  "hasDynamicHelp": false,
521
- "multiple": false,
369
+ "multiple": true,
522
370
  "type": "option"
523
371
  }
524
372
  },
525
- "hasDynamicHelp": false,
373
+ "hasDynamicHelp": true,
526
374
  "hiddenAliases": [],
527
- "id": "project:generate:manifest",
375
+ "id": "project:convert:source",
528
376
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
529
377
  "pluginName": "@salesforce/plugin-deploy-retrieve",
530
378
  "pluginType": "core",
531
379
  "strict": true,
532
- "summary": "Create a project manifest that lists the metadata components you want to deploy or retrieve.",
380
+ "summary": "Convert source-formatted files into metadata that you can deploy using Metadata API.",
533
381
  "enableJsonFlag": true,
534
382
  "requiresProject": true,
535
383
  "isESM": true,
@@ -537,54 +385,36 @@
537
385
  "lib",
538
386
  "commands",
539
387
  "project",
540
- "generate",
541
- "manifest.js"
388
+ "convert",
389
+ "source.js"
542
390
  ],
543
391
  "aliasPermutations": [
544
- "force:source:manifest:create",
545
- "source:force:manifest:create",
546
- "source:manifest:force:create",
547
- "source:manifest:create:force",
548
- "force:manifest:source:create",
549
- "manifest:force:source:create",
550
- "manifest:source:force:create",
551
- "manifest:source:create:force",
552
- "force:manifest:create:source",
553
- "manifest:force:create:source",
554
- "manifest:create:force:source",
555
- "manifest:create:source:force",
556
- "force:source:create:manifest",
557
- "source:force:create:manifest",
558
- "source:create:force:manifest",
559
- "source:create:manifest:force",
560
- "force:create:source:manifest",
561
- "create:force:source:manifest",
562
- "create:source:force:manifest",
563
- "create:source:manifest:force",
564
- "force:create:manifest:source",
565
- "create:force:manifest:source",
566
- "create:manifest:force:source",
567
- "create:manifest:source:force"
392
+ "force:source:convert",
393
+ "source:force:convert",
394
+ "source:convert:force",
395
+ "force:convert:source",
396
+ "convert:force:source",
397
+ "convert:source:force"
568
398
  ],
569
399
  "permutations": [
570
- "project:generate:manifest",
571
- "generate:project:manifest",
572
- "generate:manifest:project",
573
- "project:manifest:generate",
574
- "manifest:project:generate",
575
- "manifest:generate:project"
400
+ "project:convert:source",
401
+ "convert:project:source",
402
+ "convert:source:project",
403
+ "project:source:convert",
404
+ "source:project:convert",
405
+ "source:convert:project"
576
406
  ]
577
407
  },
578
- "project:convert:mdapi": {
408
+ "project:deploy:cancel": {
579
409
  "aliases": [
580
- "force:mdapi:convert"
410
+ "deploy:metadata:cancel"
581
411
  ],
582
412
  "args": {},
583
413
  "deprecateAliases": true,
584
- "description": "To use Salesforce CLI to work with components that you retrieved via Metadata API, first convert your files from the metadata format to the source format using this command.\n\nTo convert files from the source format back to the metadata format, run \"sf project convert source\".\n\nTo convert multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
414
+ "description": "Use this command to cancel a deploy operation that hasn't yet completed in the org. Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation.",
585
415
  "examples": [
586
- "Convert metadata formatted files in the specified directory into source formatted files; writes converted files to your default package directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/metadata",
587
- "Similar to previous example, but writes converted files to the specified output directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/metadata --output-dir path/to/outputdir"
416
+ "Cancel a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
417
+ "Cancel the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
588
418
  ],
589
419
  "flags": {
590
420
  "json": {
@@ -602,136 +432,103 @@
602
432
  "multiple": false,
603
433
  "type": "option"
604
434
  },
605
- "api-version": {
606
- "aliases": [
607
- "apiversion"
608
- ],
609
- "deprecateAliases": true,
610
- "description": "Override the api version used for api requests made by this command",
611
- "name": "api-version",
612
- "hasDynamicHelp": false,
613
- "multiple": false,
614
- "type": "option"
615
- },
616
- "loglevel": {
617
- "deprecated": {
618
- "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
619
- },
620
- "hidden": true,
621
- "name": "loglevel",
622
- "hasDynamicHelp": false,
623
- "multiple": false,
624
- "type": "option"
625
- },
626
- "root-dir": {
627
- "aliases": [
628
- "rootdir"
629
- ],
630
- "char": "r",
631
- "deprecateAliases": true,
632
- "name": "root-dir",
633
- "required": true,
634
- "summary": "Root directory that contains the Metadata API–formatted metadata.",
635
- "hasDynamicHelp": false,
435
+ "target-org": {
436
+ "char": "o",
437
+ "name": "target-org",
438
+ "noCacheDefault": true,
439
+ "summary": "Username or alias of the target org.",
440
+ "hasDynamicHelp": true,
636
441
  "multiple": false,
637
442
  "type": "option"
638
443
  },
639
- "output-dir": {
640
- "aliases": [
641
- "outputdir"
444
+ "async": {
445
+ "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
446
+ "exclusive": [
447
+ "wait"
642
448
  ],
643
- "char": "d",
644
- "deprecateAliases": true,
645
- "name": "output-dir",
646
- "summary": "Directory to store your files in after they’re converted to source format; can be an absolute or relative path.",
647
- "hasDynamicHelp": false,
648
- "multiple": false,
649
- "type": "option"
449
+ "name": "async",
450
+ "summary": "Run the command asynchronously.",
451
+ "allowNo": false,
452
+ "type": "boolean"
650
453
  },
651
- "manifest": {
652
- "char": "x",
653
- "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
654
- "name": "manifest",
655
- "summary": "File path to manifest (package.xml) of metadata types to convert.",
454
+ "job-id": {
455
+ "char": "i",
456
+ "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
457
+ "name": "job-id",
458
+ "summary": "Job ID of the deploy operation you want to cancel.",
656
459
  "hasDynamicHelp": false,
657
460
  "multiple": false,
658
461
  "type": "option"
659
462
  },
660
- "metadata-dir": {
661
- "aliases": [
662
- "metadatapath"
663
- ],
664
- "char": "p",
665
- "deprecateAliases": true,
666
- "description": "The supplied paths can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --manifest or --metadata. If the comma-separated list you’re supplying contains spaces, enclose the entire comma-separated list in one set of double quotes.",
667
- "exclusive": [
668
- "manifest",
669
- "metadata"
670
- ],
671
- "name": "metadata-dir",
672
- "summary": "Root of directory or zip file of metadata formatted files to convert.",
673
- "delimiter": ",",
674
- "hasDynamicHelp": false,
675
- "multiple": true,
676
- "type": "option"
463
+ "use-most-recent": {
464
+ "char": "r",
465
+ "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent deploy operations was more than 3 days ago, this flag won't find a job ID.",
466
+ "name": "use-most-recent",
467
+ "summary": "Use the job ID of the most recent deploy operation.",
468
+ "allowNo": false,
469
+ "type": "boolean"
677
470
  },
678
- "metadata": {
679
- "char": "m",
471
+ "wait": {
472
+ "char": "w",
473
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
680
474
  "exclusive": [
681
- "manifest",
682
- "metadatapath"
475
+ "async"
683
476
  ],
684
- "name": "metadata",
685
- "summary": "Metadata component names to convert.",
686
- "delimiter": ",",
687
- "hasDynamicHelp": false,
688
- "multiple": true,
477
+ "name": "wait",
478
+ "summary": "Number of minutes to wait for the command to complete and display results.",
479
+ "hasDynamicHelp": true,
480
+ "helpValue": "<minutes>",
481
+ "multiple": false,
689
482
  "type": "option"
690
483
  }
691
484
  },
692
- "hasDynamicHelp": false,
485
+ "hasDynamicHelp": true,
693
486
  "hiddenAliases": [],
694
- "id": "project:convert:mdapi",
487
+ "id": "project:deploy:cancel",
695
488
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
696
489
  "pluginName": "@salesforce/plugin-deploy-retrieve",
697
490
  "pluginType": "core",
698
491
  "strict": true,
699
- "summary": "Convert metadata retrieved via Metadata API into the source format used in Salesforce DX projects.",
492
+ "summary": "Cancel a deploy operation.",
700
493
  "enableJsonFlag": true,
701
- "requiresProject": true,
702
494
  "isESM": true,
703
495
  "relativePath": [
704
496
  "lib",
705
497
  "commands",
706
498
  "project",
707
- "convert",
708
- "mdapi.js"
499
+ "deploy",
500
+ "cancel.js"
709
501
  ],
710
502
  "aliasPermutations": [
711
- "force:mdapi:convert",
712
- "mdapi:force:convert",
713
- "mdapi:convert:force",
714
- "force:convert:mdapi",
715
- "convert:force:mdapi",
716
- "convert:mdapi:force"
503
+ "deploy:metadata:cancel",
504
+ "metadata:deploy:cancel",
505
+ "metadata:cancel:deploy",
506
+ "deploy:cancel:metadata",
507
+ "cancel:deploy:metadata",
508
+ "cancel:metadata:deploy"
717
509
  ],
718
510
  "permutations": [
719
- "project:convert:mdapi",
720
- "convert:project:mdapi",
721
- "convert:mdapi:project",
722
- "project:mdapi:convert",
723
- "mdapi:project:convert",
724
- "mdapi:convert:project"
511
+ "project:deploy:cancel",
512
+ "deploy:project:cancel",
513
+ "deploy:cancel:project",
514
+ "project:cancel:deploy",
515
+ "cancel:project:deploy",
516
+ "cancel:deploy:project"
725
517
  ]
726
518
  },
727
- "project:convert:source-behavior": {
728
- "aliases": [],
519
+ "project:deploy:preview": {
520
+ "aliases": [
521
+ "deploy:metadata:preview"
522
+ ],
729
523
  "args": {},
730
- "description": "Specifically, this command updates the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file and then converts the associated local source files in your project as needed.\n\nFor example, run this command with the \"--behavior decomposePermissionSetBeta\" flag to start decomposing permission sets when you deploy or retrieve them. Decomposing means breaking up the monolithic metadata API format XML file that corresponds to a metadata component into smaller XML files and directories based on its subtypes. Permission sets are not decomposed by default; you must opt-in to start decomposing them by using this command. When the command finishes, your \"sfdx-project.json\" file is updated to always decompose permission sets, and the existing permission set files in your local package directories are converted into the new decomposed format. You run this command only once for a given behavior change.\n\nFor more information about the possible values for the --behavior flag, see the \"sourceBehaviorOptions\" section in the https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_ws_config.htm topic.",
524
+ "deprecateAliases": true,
525
+ "description": "You must run this command from within a project.\n\nThe command outputs a table that describes what will happen if you run the \"<%= config.bin %> project deploy start\" command. The table lists the metadata components that will be deployed and deleted. The table also lists the current conflicts between files in your local project and components in the org. Finally, the table lists the files that won't be deployed because they're included in your .forceignore file.\n\nIf your org allows source tracking, then this command displays potential conflicts between the org and your local project. Some orgs, such as production org, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo preview the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
731
526
  "examples": [
732
- "Update your Salesforce DX project to decompose custom permission sets:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta",
733
- "Display what the command would do, but don't change any existing files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run",
734
- "Keep the temporary directory that contains the interim metadata API formatted files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run --preserve-temp-dir"
527
+ "NOTE: The commands to preview a deployment and actually deploy it use similar flags. We provide a few preview examples here, but see the help for \"<%= config.bin %> project deploy start\" for more examples that you can adapt for previewing.",
528
+ "Preview the deployment of source files in a directory, such as force-app, to your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
529
+ "Preview the deployment of all Apex classes to an org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
530
+ "Preview deployment of a specific Apex class:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass",
531
+ "Preview deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
735
532
  ],
736
533
  "flags": {
737
534
  "json": {
@@ -749,55 +546,77 @@
749
546
  "multiple": false,
750
547
  "type": "option"
751
548
  },
752
- "behavior": {
753
- "char": "b",
754
- "name": "behavior",
755
- "required": true,
756
- "summary": "Behavior to enable; the values correspond to the possible values of the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file.",
549
+ "ignore-conflicts": {
550
+ "char": "c",
551
+ "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
552
+ "name": "ignore-conflicts",
553
+ "summary": "Don't display conflicts in preview of the deployment.",
554
+ "allowNo": false,
555
+ "type": "boolean"
556
+ },
557
+ "manifest": {
558
+ "char": "x",
559
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
560
+ "exclusive": [
561
+ "source-dir",
562
+ "metadata"
563
+ ],
564
+ "name": "manifest",
565
+ "summary": "Full file path for manifest (package.xml) of components to preview.",
757
566
  "hasDynamicHelp": false,
758
567
  "multiple": false,
759
- "options": [
760
- "decomposeCustomLabelsBeta2",
761
- "decomposeCustomLabelsBeta",
762
- "decomposePermissionSetBeta",
763
- "decomposePermissionSetBeta2",
764
- "decomposeSharingRulesBeta",
765
- "decomposeWorkflowBeta",
766
- "decomposeExternalServiceRegistrationBeta"
767
- ],
768
568
  "type": "option"
769
569
  },
770
- "dry-run": {
771
- "name": "dry-run",
772
- "summary": "Display what the command would do, but don't make any actual changes.",
773
- "allowNo": false,
774
- "type": "boolean"
570
+ "metadata": {
571
+ "char": "m",
572
+ "exclusive": [
573
+ "manifest",
574
+ "source-dir"
575
+ ],
576
+ "name": "metadata",
577
+ "summary": "Metadata component names to preview.",
578
+ "hasDynamicHelp": false,
579
+ "multiple": true,
580
+ "type": "option"
775
581
  },
776
- "preserve-temp-dir": {
777
- "name": "preserve-temp-dir",
778
- "summary": "Don't delete the metadata API format temporary directory that this command creates. Useful for debugging.",
779
- "allowNo": false,
780
- "type": "boolean"
582
+ "source-dir": {
583
+ "char": "d",
584
+ "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
585
+ "exclusive": [
586
+ "manifest",
587
+ "metadata"
588
+ ],
589
+ "name": "source-dir",
590
+ "summary": "Path to the local source files to preview.",
591
+ "hasDynamicHelp": false,
592
+ "multiple": true,
593
+ "type": "option"
781
594
  },
782
595
  "target-org": {
783
596
  "char": "o",
784
597
  "name": "target-org",
785
598
  "noCacheDefault": true,
786
- "summary": "Username or alias of the target org.",
599
+ "required": true,
600
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
787
601
  "hasDynamicHelp": true,
788
602
  "multiple": false,
789
603
  "type": "option"
604
+ },
605
+ "concise": {
606
+ "name": "concise",
607
+ "summary": "Show only the changes that will be deployed; omits files that are forceignored.",
608
+ "allowNo": false,
609
+ "type": "boolean"
790
610
  }
791
611
  },
792
612
  "hasDynamicHelp": true,
793
613
  "hiddenAliases": [],
794
- "id": "project:convert:source-behavior",
614
+ "id": "project:deploy:preview",
795
615
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
796
616
  "pluginName": "@salesforce/plugin-deploy-retrieve",
797
617
  "pluginType": "core",
798
- "state": "beta",
799
618
  "strict": true,
800
- "summary": "Enable a behavior of your project source files, and then update your Salesforce DX project to implement the behavior.",
619
+ "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
801
620
  "enableJsonFlag": true,
802
621
  "requiresProject": true,
803
622
  "isESM": true,
@@ -805,29 +624,36 @@
805
624
  "lib",
806
625
  "commands",
807
626
  "project",
808
- "convert",
809
- "source-behavior.js"
627
+ "deploy",
628
+ "preview.js"
629
+ ],
630
+ "aliasPermutations": [
631
+ "deploy:metadata:preview",
632
+ "metadata:deploy:preview",
633
+ "metadata:preview:deploy",
634
+ "deploy:preview:metadata",
635
+ "preview:deploy:metadata",
636
+ "preview:metadata:deploy"
810
637
  ],
811
- "aliasPermutations": [],
812
638
  "permutations": [
813
- "project:convert:source-behavior",
814
- "convert:project:source-behavior",
815
- "convert:source-behavior:project",
816
- "project:source-behavior:convert",
817
- "source-behavior:project:convert",
818
- "source-behavior:convert:project"
639
+ "project:deploy:preview",
640
+ "deploy:project:preview",
641
+ "deploy:preview:project",
642
+ "project:preview:deploy",
643
+ "preview:project:deploy",
644
+ "preview:deploy:project"
819
645
  ]
820
646
  },
821
- "project:convert:source": {
647
+ "project:deploy:quick": {
822
648
  "aliases": [
823
- "force:source:convert"
649
+ "deploy:metadata:quick"
824
650
  ],
825
651
  "args": {},
826
652
  "deprecateAliases": true,
827
- "description": "To convert source-formatted files into the metadata format, so that you can deploy them using Metadata API, run this command. Then deploy the metadata using \"<%= config.bin %> project deploy\".\n\nTo convert Metadata API–formatted files into the source format, run \"<%= config.bin %> project convert mdapi\".\n\nTo specify a package name that includes spaces, enclose the name in single quotes.\n\nTo convert multiple components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
653
+ "description": "Before you run this command, first create a validated deployment with the \"<%= config.bin %> project deploy validate\" command, which returns a job ID. Validated deployments haven't been deployed to the org yet; you deploy them with this command. Either pass the job ID to this command or use the --use-most-recent flag to use the job ID of the most recently validated deployment. For the quick deploy to succeed, the associated validated deployment must also have succeeded.\n\nExecuting this quick deploy command takes less time than a standard deploy because it skips running Apex tests. These tests were previously run as part of the validation. Validating first and then running a quick deploy is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nThis command doesn't support source-tracking. The source you deploy overwrites the corresponding metadata in your org. This command doesn’t attempt to merge your source with the versions in your org.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. Use \"<%= config.bin %> project deploy start\" instead.",
828
654
  "examples": [
829
- "Convert source-formatted files in the specified directory into metadata-formatted files; writes converted files into a new directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/source",
830
- "Similar to previous example, but writes converted files to the specified output directory and associates the files with the specified package:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/source --output-dir path/to/outputdir --package-name 'My Package'"
655
+ "Run a quick deploy to your default org using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
656
+ "Asynchronously run a quick deploy of the most recently validated deployment to an org with alias \"my-prod-org\":\n<%= config.bin %> <%= command.id %> --async --use-most-recent --target-org my-prod-org"
831
657
  ],
832
658
  "flags": {
833
659
  "json": {
@@ -845,151 +671,162 @@
845
671
  "multiple": false,
846
672
  "type": "option"
847
673
  },
848
- "api-version": {
849
- "aliases": [
850
- "apiversion"
674
+ "async": {
675
+ "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
676
+ "exclusive": [
677
+ "wait"
851
678
  ],
852
- "deprecateAliases": true,
853
- "description": "Override the api version used for api requests made by this command",
854
- "name": "api-version",
855
- "summary": "API Version to use in the generated project's manifest. By default, will use the version from sfdx-project.json",
856
- "hasDynamicHelp": false,
857
- "multiple": false,
858
- "type": "option"
859
- },
860
- "loglevel": {
861
- "deprecated": {
862
- "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
863
- },
864
- "hidden": true,
865
- "name": "loglevel",
866
- "hasDynamicHelp": false,
867
- "multiple": false,
868
- "type": "option"
679
+ "name": "async",
680
+ "summary": "Run the command asynchronously.",
681
+ "allowNo": false,
682
+ "type": "boolean"
869
683
  },
870
- "root-dir": {
871
- "aliases": [
872
- "rootdir"
684
+ "concise": {
685
+ "exclusive": [
686
+ "verbose"
873
687
  ],
874
- "char": "r",
875
- "deprecateAliases": true,
876
- "name": "root-dir",
877
- "summary": "Source directory other than the default package to convert.",
688
+ "name": "concise",
689
+ "summary": "Show concise output of the deploy result.",
690
+ "allowNo": false,
691
+ "type": "boolean"
692
+ },
693
+ "job-id": {
694
+ "char": "i",
695
+ "description": "The job ID is valid for 10 days from when you started the validation.",
696
+ "name": "job-id",
697
+ "summary": "Job ID of the deployment you want to quick deploy.",
878
698
  "hasDynamicHelp": false,
879
699
  "multiple": false,
880
700
  "type": "option"
881
701
  },
882
- "output-dir": {
883
- "aliases": [
884
- "outputdir"
885
- ],
886
- "char": "d",
887
- "deprecateAliases": true,
888
- "name": "output-dir",
889
- "summary": "Output directory to store the Metadata API–formatted files in.",
890
- "default": "metadataPackage_>timestamp<",
702
+ "target-org": {
703
+ "char": "o",
704
+ "name": "target-org",
705
+ "noCacheDefault": true,
706
+ "summary": "Username or alias of the target org.",
891
707
  "hasDynamicHelp": true,
892
708
  "multiple": false,
893
709
  "type": "option"
894
710
  },
895
- "package-name": {
896
- "aliases": [
897
- "packagename"
898
- ],
899
- "char": "n",
900
- "deprecateAliases": true,
901
- "name": "package-name",
902
- "summary": "Name of the package to associate with the metadata-formatted files.",
903
- "hasDynamicHelp": false,
904
- "multiple": false,
905
- "type": "option"
906
- },
907
- "manifest": {
908
- "char": "x",
909
- "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
910
- "name": "manifest",
911
- "summary": "Path to the manifest (package.xml) file that specifies the metadata types to convert.",
912
- "hasDynamicHelp": false,
913
- "multiple": false,
914
- "type": "option"
711
+ "use-most-recent": {
712
+ "char": "r",
713
+ "description": "For performance reasons, this flag uses only job IDs that were validated in the past 3 days or less. If your most recent deployment validation was more than 3 days ago, this flag won't find a job ID.",
714
+ "name": "use-most-recent",
715
+ "summary": "Use the job ID of the most recently validated deployment.",
716
+ "allowNo": false,
717
+ "type": "boolean"
915
718
  },
916
- "source-dir": {
917
- "aliases": [
918
- "sourcepath"
919
- ],
920
- "char": "p",
921
- "deprecateAliases": true,
922
- "description": "The supplied paths can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --manifest or --metadata.",
719
+ "verbose": {
923
720
  "exclusive": [
924
- "manifest",
925
- "metadata"
721
+ "concise"
926
722
  ],
927
- "name": "source-dir",
928
- "summary": "Paths to the local source files to convert.",
929
- "delimiter": ",",
930
- "hasDynamicHelp": false,
931
- "multiple": true,
932
- "type": "option"
723
+ "name": "verbose",
724
+ "summary": "Show verbose output of the deploy result.",
725
+ "allowNo": false,
726
+ "type": "boolean"
933
727
  },
934
- "metadata": {
935
- "char": "m",
728
+ "wait": {
729
+ "char": "w",
730
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
936
731
  "exclusive": [
937
- "manifest",
938
- "sourcepath"
732
+ "async"
939
733
  ],
940
- "name": "metadata",
941
- "summary": "Metadata component names to convert.",
942
- "delimiter": ",",
734
+ "name": "wait",
735
+ "summary": "Number of minutes to wait for the command to complete and display results.",
736
+ "default": "33 minutes",
737
+ "hasDynamicHelp": true,
738
+ "helpValue": "<minutes>",
739
+ "multiple": false,
740
+ "type": "option"
741
+ },
742
+ "api-version": {
743
+ "char": "a",
744
+ "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
745
+ "name": "api-version",
746
+ "summary": "Target API version for the deploy.",
943
747
  "hasDynamicHelp": false,
944
- "multiple": true,
748
+ "multiple": false,
945
749
  "type": "option"
946
750
  }
947
751
  },
948
752
  "hasDynamicHelp": true,
949
753
  "hiddenAliases": [],
950
- "id": "project:convert:source",
754
+ "id": "project:deploy:quick",
951
755
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
952
756
  "pluginName": "@salesforce/plugin-deploy-retrieve",
953
757
  "pluginType": "core",
954
758
  "strict": true,
955
- "summary": "Convert source-formatted files into metadata that you can deploy using Metadata API.",
759
+ "summary": "Quickly deploy a validated deployment to an org.",
956
760
  "enableJsonFlag": true,
957
- "requiresProject": true,
761
+ "errorCodes": {
762
+ "header": "ERROR CODES",
763
+ "body": [
764
+ {
765
+ "name": "Succeeded (0)",
766
+ "description": "The deploy succeeded."
767
+ },
768
+ {
769
+ "name": "Canceled (1)",
770
+ "description": "The deploy was canceled."
771
+ },
772
+ {
773
+ "name": "Failed (1)",
774
+ "description": "The deploy failed."
775
+ },
776
+ {
777
+ "name": "SucceededPartial (68)",
778
+ "description": "The deploy partially succeeded."
779
+ },
780
+ {
781
+ "name": "InProgress (69)",
782
+ "description": "The deploy is in progress."
783
+ },
784
+ {
785
+ "name": "Pending (69)",
786
+ "description": "The deploy is pending."
787
+ },
788
+ {
789
+ "name": "Canceling (69)",
790
+ "description": "The deploy is being canceled."
791
+ }
792
+ ]
793
+ },
958
794
  "isESM": true,
959
795
  "relativePath": [
960
796
  "lib",
961
797
  "commands",
962
798
  "project",
963
- "convert",
964
- "source.js"
799
+ "deploy",
800
+ "quick.js"
965
801
  ],
966
802
  "aliasPermutations": [
967
- "force:source:convert",
968
- "source:force:convert",
969
- "source:convert:force",
970
- "force:convert:source",
971
- "convert:force:source",
972
- "convert:source:force"
803
+ "deploy:metadata:quick",
804
+ "metadata:deploy:quick",
805
+ "metadata:quick:deploy",
806
+ "deploy:quick:metadata",
807
+ "quick:deploy:metadata",
808
+ "quick:metadata:deploy"
973
809
  ],
974
810
  "permutations": [
975
- "project:convert:source",
976
- "convert:project:source",
977
- "convert:source:project",
978
- "project:source:convert",
979
- "source:project:convert",
980
- "source:convert:project"
811
+ "project:deploy:quick",
812
+ "deploy:project:quick",
813
+ "deploy:quick:project",
814
+ "project:quick:deploy",
815
+ "quick:project:deploy",
816
+ "quick:deploy:project"
981
817
  ]
982
818
  },
983
- "project:deploy:cancel": {
819
+ "project:deploy:report": {
984
820
  "aliases": [
985
- "deploy:metadata:cancel"
821
+ "deploy:metadata:report"
986
822
  ],
987
823
  "args": {},
988
824
  "deprecateAliases": true,
989
- "description": "Use this command to cancel a deploy operation that hasn't yet completed in the org. Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation.",
825
+ "description": "Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation. If you specify the --wait flag, the command polls for the status every second until the timeout of --wait minutes. If you don't specify the --wait flag, the command simply checks and displays the status of the deploy; the command doesn't poll for the status.\n\nYou typically don't specify the --target-org flag because the cached job already references the org to which you deployed. But if you run this command on a computer different than the one from which you deployed, then you must specify the --target-org and it must point to the same org.\n\nThis command doesn't update source tracking information.",
990
826
  "examples": [
991
- "Cancel a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
992
- "Cancel the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
827
+ "Check the status using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
828
+ "Check the status of the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent",
829
+ "Poll for the status using a job ID and target org:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2 --target-org me@my.org --wait 30"
993
830
  ],
994
831
  "flags": {
995
832
  "json": {
@@ -1016,219 +853,124 @@
1016
853
  "multiple": false,
1017
854
  "type": "option"
1018
855
  },
1019
- "async": {
1020
- "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
1021
- "exclusive": [
1022
- "wait"
1023
- ],
1024
- "name": "async",
1025
- "summary": "Run the command asynchronously.",
1026
- "allowNo": false,
1027
- "type": "boolean"
1028
- },
1029
856
  "job-id": {
1030
857
  "char": "i",
1031
858
  "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
1032
859
  "name": "job-id",
1033
- "summary": "Job ID of the deploy operation you want to cancel.",
860
+ "summary": "Job ID of the deploy operation you want to check the status of.",
1034
861
  "hasDynamicHelp": false,
1035
862
  "multiple": false,
1036
863
  "type": "option"
1037
864
  },
1038
865
  "use-most-recent": {
1039
866
  "char": "r",
1040
- "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent deploy operations was more than 3 days ago, this flag won't find a job ID.",
867
+ "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
1041
868
  "name": "use-most-recent",
1042
869
  "summary": "Use the job ID of the most recent deploy operation.",
1043
870
  "allowNo": false,
1044
871
  "type": "boolean"
1045
872
  },
1046
- "wait": {
1047
- "char": "w",
1048
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
1049
- "exclusive": [
1050
- "async"
1051
- ],
1052
- "name": "wait",
1053
- "summary": "Number of minutes to wait for the command to complete and display results.",
1054
- "hasDynamicHelp": true,
1055
- "helpValue": "<minutes>",
1056
- "multiple": false,
1057
- "type": "option"
1058
- }
1059
- },
1060
- "hasDynamicHelp": true,
1061
- "hiddenAliases": [],
1062
- "id": "project:deploy:cancel",
1063
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1064
- "pluginName": "@salesforce/plugin-deploy-retrieve",
1065
- "pluginType": "core",
1066
- "strict": true,
1067
- "summary": "Cancel a deploy operation.",
1068
- "enableJsonFlag": true,
1069
- "isESM": true,
1070
- "relativePath": [
1071
- "lib",
1072
- "commands",
1073
- "project",
1074
- "deploy",
1075
- "cancel.js"
1076
- ],
1077
- "aliasPermutations": [
1078
- "deploy:metadata:cancel",
1079
- "metadata:deploy:cancel",
1080
- "metadata:cancel:deploy",
1081
- "deploy:cancel:metadata",
1082
- "cancel:deploy:metadata",
1083
- "cancel:metadata:deploy"
1084
- ],
1085
- "permutations": [
1086
- "project:deploy:cancel",
1087
- "deploy:project:cancel",
1088
- "deploy:cancel:project",
1089
- "project:cancel:deploy",
1090
- "cancel:project:deploy",
1091
- "cancel:deploy:project"
1092
- ]
1093
- },
1094
- "project:deploy:preview": {
1095
- "aliases": [
1096
- "deploy:metadata:preview"
1097
- ],
1098
- "args": {},
1099
- "deprecateAliases": true,
1100
- "description": "You must run this command from within a project.\n\nThe command outputs a table that describes what will happen if you run the \"<%= config.bin %> project deploy start\" command. The table lists the metadata components that will be deployed and deleted. The table also lists the current conflicts between files in your local project and components in the org. Finally, the table lists the files that won't be deployed because they're included in your .forceignore file.\n\nIf your org allows source tracking, then this command displays potential conflicts between the org and your local project. Some orgs, such as production org, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo preview the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
1101
- "examples": [
1102
- "NOTE: The commands to preview a deployment and actually deploy it use similar flags. We provide a few preview examples here, but see the help for \"<%= config.bin %> project deploy start\" for more examples that you can adapt for previewing.",
1103
- "Preview the deployment of source files in a directory, such as force-app, to your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
1104
- "Preview the deployment of all Apex classes to an org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
1105
- "Preview deployment of a specific Apex class:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass",
1106
- "Preview deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
1107
- ],
1108
- "flags": {
1109
- "json": {
1110
- "description": "Format output as json.",
1111
- "helpGroup": "GLOBAL",
1112
- "name": "json",
1113
- "allowNo": false,
1114
- "type": "boolean"
1115
- },
1116
- "flags-dir": {
1117
- "helpGroup": "GLOBAL",
1118
- "name": "flags-dir",
1119
- "summary": "Import flag values from a directory.",
873
+ "coverage-formatters": {
874
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
875
+ "helpGroup": "Test",
876
+ "name": "coverage-formatters",
877
+ "summary": "Format of the code coverage results.",
1120
878
  "hasDynamicHelp": false,
1121
- "multiple": false,
879
+ "multiple": true,
880
+ "options": [
881
+ "clover",
882
+ "cobertura",
883
+ "html-spa",
884
+ "html",
885
+ "json",
886
+ "json-summary",
887
+ "lcovonly",
888
+ "none",
889
+ "teamcity",
890
+ "text",
891
+ "text-summary"
892
+ ],
1122
893
  "type": "option"
1123
894
  },
1124
- "ignore-conflicts": {
1125
- "char": "c",
1126
- "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
1127
- "name": "ignore-conflicts",
1128
- "summary": "Don't display conflicts in preview of the deployment.",
895
+ "junit": {
896
+ "helpGroup": "Test",
897
+ "name": "junit",
898
+ "summary": "Output JUnit test results.",
1129
899
  "allowNo": false,
1130
900
  "type": "boolean"
1131
901
  },
1132
- "manifest": {
1133
- "char": "x",
1134
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1135
- "exclusive": [
1136
- "source-dir",
1137
- "metadata"
902
+ "results-dir": {
903
+ "helpGroup": "Test",
904
+ "name": "results-dir",
905
+ "relationships": [
906
+ {
907
+ "type": "some",
908
+ "flags": [
909
+ "coverage-formatters",
910
+ "junit"
911
+ ]
912
+ }
1138
913
  ],
1139
- "name": "manifest",
1140
- "summary": "Full file path for manifest (package.xml) of components to preview.",
914
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1141
915
  "hasDynamicHelp": false,
1142
916
  "multiple": false,
1143
917
  "type": "option"
1144
918
  },
1145
- "metadata": {
1146
- "char": "m",
1147
- "exclusive": [
1148
- "manifest",
1149
- "source-dir"
1150
- ],
1151
- "name": "metadata",
1152
- "summary": "Metadata component names to preview.",
1153
- "hasDynamicHelp": false,
1154
- "multiple": true,
1155
- "type": "option"
1156
- },
1157
- "source-dir": {
1158
- "char": "d",
1159
- "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1160
- "exclusive": [
1161
- "manifest",
1162
- "metadata"
1163
- ],
1164
- "name": "source-dir",
1165
- "summary": "Path to the local source files to preview.",
1166
- "hasDynamicHelp": false,
1167
- "multiple": true,
1168
- "type": "option"
1169
- },
1170
- "target-org": {
1171
- "char": "o",
1172
- "name": "target-org",
1173
- "noCacheDefault": true,
1174
- "required": true,
1175
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
919
+ "wait": {
920
+ "char": "w",
921
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
922
+ "name": "wait",
923
+ "summary": "Number of minutes to wait for command to complete and display results.",
1176
924
  "hasDynamicHelp": true,
925
+ "helpValue": "<minutes>",
1177
926
  "multiple": false,
1178
927
  "type": "option"
1179
- },
1180
- "concise": {
1181
- "name": "concise",
1182
- "summary": "Show only the changes that will be deployed; omits files that are forceignored.",
1183
- "allowNo": false,
1184
- "type": "boolean"
1185
928
  }
1186
929
  },
1187
930
  "hasDynamicHelp": true,
1188
931
  "hiddenAliases": [],
1189
- "id": "project:deploy:preview",
932
+ "id": "project:deploy:report",
1190
933
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1191
934
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1192
935
  "pluginType": "core",
1193
936
  "strict": true,
1194
- "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
937
+ "summary": "Check or poll for the status of a deploy operation.",
1195
938
  "enableJsonFlag": true,
1196
- "requiresProject": true,
1197
939
  "isESM": true,
1198
940
  "relativePath": [
1199
941
  "lib",
1200
942
  "commands",
1201
943
  "project",
1202
944
  "deploy",
1203
- "preview.js"
945
+ "report.js"
1204
946
  ],
1205
947
  "aliasPermutations": [
1206
- "deploy:metadata:preview",
1207
- "metadata:deploy:preview",
1208
- "metadata:preview:deploy",
1209
- "deploy:preview:metadata",
1210
- "preview:deploy:metadata",
1211
- "preview:metadata:deploy"
948
+ "deploy:metadata:report",
949
+ "metadata:deploy:report",
950
+ "metadata:report:deploy",
951
+ "deploy:report:metadata",
952
+ "report:deploy:metadata",
953
+ "report:metadata:deploy"
1212
954
  ],
1213
955
  "permutations": [
1214
- "project:deploy:preview",
1215
- "deploy:project:preview",
1216
- "deploy:preview:project",
1217
- "project:preview:deploy",
1218
- "preview:project:deploy",
1219
- "preview:deploy:project"
956
+ "project:deploy:report",
957
+ "deploy:project:report",
958
+ "deploy:report:project",
959
+ "project:report:deploy",
960
+ "report:project:deploy",
961
+ "report:deploy:project"
1220
962
  ]
1221
963
  },
1222
- "project:deploy:quick": {
964
+ "project:deploy:resume": {
1223
965
  "aliases": [
1224
- "deploy:metadata:quick"
966
+ "deploy:metadata:resume"
1225
967
  ],
1226
968
  "args": {},
1227
969
  "deprecateAliases": true,
1228
- "description": "Before you run this command, first create a validated deployment with the \"<%= config.bin %> project deploy validate\" command, which returns a job ID. Validated deployments haven't been deployed to the org yet; you deploy them with this command. Either pass the job ID to this command or use the --use-most-recent flag to use the job ID of the most recently validated deployment. For the quick deploy to succeed, the associated validated deployment must also have succeeded.\n\nExecuting this quick deploy command takes less time than a standard deploy because it skips running Apex tests. These tests were previously run as part of the validation. Validating first and then running a quick deploy is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nThis command doesn't support source-tracking. The source you deploy overwrites the corresponding metadata in your org. This command doesn’t attempt to merge your source with the versions in your org.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. Use \"<%= config.bin %> project deploy start\" instead.",
970
+ "description": "Use this command to resume watching a deploy operation if the original command times out or you specified the --async flag. Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations. This command doesn't resume the original operation itself, because the operation always continues after you've started it, regardless of whether you're watching it or not. When the deploy completes, source tracking information is updated as needed.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation.",
1229
971
  "examples": [
1230
- "Run a quick deploy to your default org using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
1231
- "Asynchronously run a quick deploy of the most recently validated deployment to an org with alias \"my-prod-org\":\n<%= config.bin %> <%= command.id %> --async --use-most-recent --target-org my-prod-org"
972
+ "Resume watching a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
973
+ "Resume watching the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
1232
974
  ],
1233
975
  "flags": {
1234
976
  "json": {
@@ -1246,48 +988,29 @@
1246
988
  "multiple": false,
1247
989
  "type": "option"
1248
990
  },
1249
- "async": {
1250
- "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
1251
- "exclusive": [
1252
- "wait"
1253
- ],
1254
- "name": "async",
1255
- "summary": "Run the command asynchronously.",
1256
- "allowNo": false,
1257
- "type": "boolean"
1258
- },
1259
991
  "concise": {
1260
992
  "exclusive": [
1261
993
  "verbose"
1262
994
  ],
1263
995
  "name": "concise",
1264
- "summary": "Show concise output of the deploy result.",
996
+ "summary": "Show concise output of the deploy operation result.",
1265
997
  "allowNo": false,
1266
998
  "type": "boolean"
1267
999
  },
1268
1000
  "job-id": {
1269
1001
  "char": "i",
1270
- "description": "The job ID is valid for 10 days from when you started the validation.",
1002
+ "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
1271
1003
  "name": "job-id",
1272
- "summary": "Job ID of the deployment you want to quick deploy.",
1004
+ "summary": "Job ID of the deploy operation you want to resume.",
1273
1005
  "hasDynamicHelp": false,
1274
1006
  "multiple": false,
1275
1007
  "type": "option"
1276
1008
  },
1277
- "target-org": {
1278
- "char": "o",
1279
- "name": "target-org",
1280
- "noCacheDefault": true,
1281
- "summary": "Username or alias of the target org.",
1282
- "hasDynamicHelp": true,
1283
- "multiple": false,
1284
- "type": "option"
1285
- },
1286
1009
  "use-most-recent": {
1287
1010
  "char": "r",
1288
- "description": "For performance reasons, this flag uses only job IDs that were validated in the past 3 days or less. If your most recent deployment validation was more than 3 days ago, this flag won't find a job ID.",
1011
+ "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
1289
1012
  "name": "use-most-recent",
1290
- "summary": "Use the job ID of the most recently validated deployment.",
1013
+ "summary": "Use the job ID of the most recent deploy operation.",
1291
1014
  "allowNo": false,
1292
1015
  "type": "boolean"
1293
1016
  },
@@ -1296,43 +1019,85 @@
1296
1019
  "concise"
1297
1020
  ],
1298
1021
  "name": "verbose",
1299
- "summary": "Show verbose output of the deploy result.",
1022
+ "summary": "Show verbose output of the deploy operation result.",
1300
1023
  "allowNo": false,
1301
1024
  "type": "boolean"
1302
1025
  },
1303
1026
  "wait": {
1304
1027
  "char": "w",
1305
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
1306
- "exclusive": [
1307
- "async"
1308
- ],
1028
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy operation, run this command again. To check the status of the deploy operation, run \"<%= config.bin %> project deploy report\".",
1309
1029
  "name": "wait",
1310
1030
  "summary": "Number of minutes to wait for the command to complete and display results.",
1311
- "default": "33 minutes",
1312
1031
  "hasDynamicHelp": true,
1313
1032
  "helpValue": "<minutes>",
1314
1033
  "multiple": false,
1315
1034
  "type": "option"
1316
1035
  },
1317
- "api-version": {
1318
- "char": "a",
1319
- "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1320
- "name": "api-version",
1321
- "summary": "Target API version for the deploy.",
1036
+ "coverage-formatters": {
1037
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1038
+ "helpGroup": "Test",
1039
+ "name": "coverage-formatters",
1040
+ "summary": "Format of the code coverage results.",
1322
1041
  "hasDynamicHelp": false,
1323
- "multiple": false,
1042
+ "multiple": true,
1043
+ "options": [
1044
+ "clover",
1045
+ "cobertura",
1046
+ "html-spa",
1047
+ "html",
1048
+ "json",
1049
+ "json-summary",
1050
+ "lcovonly",
1051
+ "none",
1052
+ "teamcity",
1053
+ "text",
1054
+ "text-summary"
1055
+ ],
1056
+ "type": "option"
1057
+ },
1058
+ "junit": {
1059
+ "helpGroup": "Test",
1060
+ "name": "junit",
1061
+ "summary": "Output JUnit test results.",
1062
+ "allowNo": false,
1063
+ "type": "boolean"
1064
+ },
1065
+ "results-dir": {
1066
+ "helpGroup": "Test",
1067
+ "name": "results-dir",
1068
+ "relationships": [
1069
+ {
1070
+ "type": "some",
1071
+ "flags": [
1072
+ "coverage-formatters",
1073
+ "junit"
1074
+ ]
1075
+ }
1076
+ ],
1077
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1078
+ "hasDynamicHelp": false,
1079
+ "multiple": false,
1324
1080
  "type": "option"
1325
1081
  }
1326
1082
  },
1327
1083
  "hasDynamicHelp": true,
1328
1084
  "hiddenAliases": [],
1329
- "id": "project:deploy:quick",
1085
+ "id": "project:deploy:resume",
1330
1086
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1331
1087
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1332
1088
  "pluginType": "core",
1333
1089
  "strict": true,
1334
- "summary": "Quickly deploy a validated deployment to an org.",
1090
+ "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1335
1091
  "enableJsonFlag": true,
1092
+ "envVariablesSection": {
1093
+ "header": "ENVIRONMENT VARIABLES",
1094
+ "body": [
1095
+ {
1096
+ "name": "SF_USE_PROGRESS_BAR",
1097
+ "description": "Set to false to disable the progress bar when running the metadata deploy command."
1098
+ }
1099
+ ]
1100
+ },
1336
1101
  "errorCodes": {
1337
1102
  "header": "ERROR CODES",
1338
1103
  "body": [
@@ -1372,36 +1137,47 @@
1372
1137
  "commands",
1373
1138
  "project",
1374
1139
  "deploy",
1375
- "quick.js"
1140
+ "resume.js"
1376
1141
  ],
1377
1142
  "aliasPermutations": [
1378
- "deploy:metadata:quick",
1379
- "metadata:deploy:quick",
1380
- "metadata:quick:deploy",
1381
- "deploy:quick:metadata",
1382
- "quick:deploy:metadata",
1383
- "quick:metadata:deploy"
1143
+ "deploy:metadata:resume",
1144
+ "metadata:deploy:resume",
1145
+ "metadata:resume:deploy",
1146
+ "deploy:resume:metadata",
1147
+ "resume:deploy:metadata",
1148
+ "resume:metadata:deploy"
1384
1149
  ],
1385
1150
  "permutations": [
1386
- "project:deploy:quick",
1387
- "deploy:project:quick",
1388
- "deploy:quick:project",
1389
- "project:quick:deploy",
1390
- "quick:project:deploy",
1391
- "quick:deploy:project"
1151
+ "project:deploy:resume",
1152
+ "deploy:project:resume",
1153
+ "deploy:resume:project",
1154
+ "project:resume:deploy",
1155
+ "resume:project:deploy",
1156
+ "resume:deploy:project"
1392
1157
  ]
1393
1158
  },
1394
- "project:deploy:report": {
1159
+ "project:deploy:start": {
1395
1160
  "aliases": [
1396
- "deploy:metadata:report"
1161
+ "deploy:metadata"
1397
1162
  ],
1398
1163
  "args": {},
1399
1164
  "deprecateAliases": true,
1400
- "description": "Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation. If you specify the --wait flag, the command polls for the status every second until the timeout of --wait minutes. If you don't specify the --wait flag, the command simply checks and displays the status of the deploy; the command doesn't poll for the status.\n\nYou typically don't specify the --target-org flag because the cached job already references the org to which you deployed. But if you run this command on a computer different than the one from which you deployed, then you must specify the --target-org and it must point to the same org.\n\nThis command doesn't update source tracking information.",
1165
+ "description": "You must run this command from within a project.\n\nMetadata components are deployed in source format by default. Deploy them in metadata format by specifying the --metadata-dir flag, which specifies the root directory or ZIP file that contains the metadata formatted files you want to deploy.\n\nIf your org allows source tracking, then this command tracks the changes in your source. Some orgs, such as production orgs, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo deploy multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
1401
1166
  "examples": [
1402
- "Check the status using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
1403
- "Check the status of the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent",
1404
- "Poll for the status using a job ID and target org:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2 --target-org me@my.org --wait 30"
1167
+ "Deploy local changes not in the org; uses your default org:\n<%= config.bin %> <%= command.id %>",
1168
+ "Deploy all source files in the \"force-app\" directory to an org with alias \"my-scratch\"; show only concise output, in other words don't print a list of all the source that was deployed:\n<%= config.bin %> <%= command.id %> --source-dir force-app --target-org my-scratch --concise",
1169
+ "Deploy all the Apex classes and custom objects that are in the \"force-app\" directory. The list views, layouts, etc, that are associated with the custom objects are also deployed. Both examples are equivalent:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes force-app/main/default/objects\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes --source-dir force-app/main/default/objects",
1170
+ "Deploy all Apex classes that are in all package directories defined in the \"sfdx-project.json\" file:\n<%= config.bin %> <%= command.id %> --metadata ApexClass",
1171
+ "Deploy a specific Apex class; ignore any conflicts between the local project and org (be careful with this flag, because it will overwrite the Apex class in the org if there are conflicts!):\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --ignore-conflicts",
1172
+ "Deploy specific Apex classes that match a pattern; in this example, deploy Apex classes whose names contain the string \"MyApex\". Also ignore any deployment warnings (again, be careful with this flag! You typically want to see the warnings):\n<%= config.bin %> <%= command.id %> --metadata 'ApexClass:MyApex*' --ignore-warnings",
1173
+ "Deploy a custom object called ExcitingObject that's in the SBQQ namespace:\nsf <%= command.id %> --metadata CustomObject:SBQQ__ExcitingObject",
1174
+ "Deploy all custom objects in the SBQQ namespace by using a wildcard and quotes:\nsf <%= command.id %> --metadata 'CustomObject:SBQQ__*'",
1175
+ "Deploy all custom objects and Apex classes found in all defined package directories (both examples are equivalent):\n<%= config.bin %> <%= command.id %> --metadata CustomObject ApexClass\n<%= config.bin %> <%= command.id %> --metadata CustomObject --metadata ApexClass",
1176
+ "Deploy all Apex classes and a profile that has a space in its name:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --metadata \"Profile:My Profile\"",
1177
+ "Deploy all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml",
1178
+ "Run the tests that aren’t in any managed packages as part of a deployment:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests",
1179
+ "Deploy all metadata formatted files in the \"MDAPI\" directory:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI",
1180
+ "Deploy all metadata formatted files in the \"MDAPI\" directory; items listed in the MDAPI/destructiveChangesPre.xml and MDAPI/destructiveChangesPost.xml manifests are immediately eligible for deletion rather than stored in the Recycle Bin:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI --purge-on-delete"
1405
1181
  ],
1406
1182
  "flags": {
1407
1183
  "json": {
@@ -1419,195 +1195,229 @@
1419
1195
  "multiple": false,
1420
1196
  "type": "option"
1421
1197
  },
1422
- "target-org": {
1423
- "char": "o",
1424
- "name": "target-org",
1425
- "noCacheDefault": true,
1426
- "summary": "Username or alias of the target org.",
1427
- "hasDynamicHelp": true,
1428
- "multiple": false,
1429
- "type": "option"
1430
- },
1431
- "job-id": {
1432
- "char": "i",
1433
- "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
1434
- "name": "job-id",
1435
- "summary": "Job ID of the deploy operation you want to check the status of.",
1198
+ "api-version": {
1199
+ "char": "a",
1200
+ "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1201
+ "name": "api-version",
1202
+ "summary": "Target API version for the deploy.",
1436
1203
  "hasDynamicHelp": false,
1437
1204
  "multiple": false,
1438
1205
  "type": "option"
1439
1206
  },
1440
- "use-most-recent": {
1207
+ "async": {
1208
+ "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1209
+ "exclusive": [
1210
+ "wait"
1211
+ ],
1212
+ "name": "async",
1213
+ "summary": "Run the command asynchronously.",
1214
+ "allowNo": false,
1215
+ "type": "boolean"
1216
+ },
1217
+ "concise": {
1218
+ "exclusive": [
1219
+ "verbose"
1220
+ ],
1221
+ "name": "concise",
1222
+ "summary": "Show concise output of the deploy result.",
1223
+ "allowNo": false,
1224
+ "type": "boolean"
1225
+ },
1226
+ "dry-run": {
1227
+ "name": "dry-run",
1228
+ "summary": "Validate deploy and run Apex tests but don’t save to the org.",
1229
+ "allowNo": false,
1230
+ "type": "boolean"
1231
+ },
1232
+ "ignore-conflicts": {
1233
+ "char": "c",
1234
+ "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
1235
+ "name": "ignore-conflicts",
1236
+ "summary": "Ignore conflicts and deploy local files, even if they overwrite changes in the org.",
1237
+ "allowNo": false,
1238
+ "type": "boolean"
1239
+ },
1240
+ "ignore-errors": {
1441
1241
  "char": "r",
1442
- "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
1443
- "name": "use-most-recent",
1444
- "summary": "Use the job ID of the most recent deploy operation.",
1242
+ "description": "Never use this flag when deploying to a production org. If you specify it, components without errors are deployed and components with errors are skipped, and could result in an inconsistent production org.",
1243
+ "name": "ignore-errors",
1244
+ "summary": "Ignore any errors and don’t roll back deployment.",
1445
1245
  "allowNo": false,
1446
1246
  "type": "boolean"
1447
1247
  },
1448
- "coverage-formatters": {
1449
- "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1450
- "helpGroup": "Test",
1451
- "name": "coverage-formatters",
1452
- "summary": "Format of the code coverage results.",
1248
+ "ignore-warnings": {
1249
+ "char": "g",
1250
+ "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
1251
+ "name": "ignore-warnings",
1252
+ "summary": "Ignore warnings and allow a deployment to complete successfully.",
1253
+ "allowNo": false,
1254
+ "type": "boolean"
1255
+ },
1256
+ "manifest": {
1257
+ "char": "x",
1258
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1259
+ "exclusive": [
1260
+ "source-dir",
1261
+ "metadata",
1262
+ "metadata-dir"
1263
+ ],
1264
+ "helpGroup": "Source Format",
1265
+ "name": "manifest",
1266
+ "summary": "Full file path for manifest (package.xml) of components to deploy.",
1267
+ "hasDynamicHelp": false,
1268
+ "multiple": false,
1269
+ "type": "option"
1270
+ },
1271
+ "metadata": {
1272
+ "char": "m",
1273
+ "exclusive": [
1274
+ "manifest",
1275
+ "source-dir",
1276
+ "metadata-dir"
1277
+ ],
1278
+ "helpGroup": "Source Format",
1279
+ "name": "metadata",
1280
+ "summary": "Metadata component names to deploy. Wildcards (`*` ) supported as long as you use quotes, such as `ApexClass:MyClass*`.",
1453
1281
  "hasDynamicHelp": false,
1454
1282
  "multiple": true,
1455
- "options": [
1456
- "clover",
1457
- "cobertura",
1458
- "html-spa",
1459
- "html",
1460
- "json",
1461
- "json-summary",
1462
- "lcovonly",
1463
- "none",
1464
- "teamcity",
1465
- "text",
1466
- "text-summary"
1283
+ "type": "option"
1284
+ },
1285
+ "metadata-dir": {
1286
+ "exclusive": [
1287
+ "manifest",
1288
+ "source-dir",
1289
+ "metadata"
1467
1290
  ],
1291
+ "helpGroup": "Metadata API Format",
1292
+ "name": "metadata-dir",
1293
+ "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1294
+ "hasDynamicHelp": false,
1295
+ "multiple": false,
1468
1296
  "type": "option"
1469
1297
  },
1470
- "junit": {
1471
- "helpGroup": "Test",
1472
- "name": "junit",
1473
- "summary": "Output JUnit test results.",
1298
+ "single-package": {
1299
+ "dependsOn": [
1300
+ "metadata-dir"
1301
+ ],
1302
+ "helpGroup": "Metadata API Format",
1303
+ "name": "single-package",
1304
+ "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
1474
1305
  "allowNo": false,
1475
1306
  "type": "boolean"
1476
1307
  },
1477
- "results-dir": {
1478
- "helpGroup": "Test",
1479
- "name": "results-dir",
1480
- "relationships": [
1481
- {
1482
- "type": "some",
1483
- "flags": [
1484
- "coverage-formatters",
1485
- "junit"
1486
- ]
1487
- }
1308
+ "source-dir": {
1309
+ "char": "d",
1310
+ "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1311
+ "exclusive": [
1312
+ "manifest",
1313
+ "metadata",
1314
+ "metadata-dir"
1488
1315
  ],
1489
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1316
+ "helpGroup": "Source Format",
1317
+ "name": "source-dir",
1318
+ "summary": "Path to the local source files to deploy.",
1490
1319
  "hasDynamicHelp": false,
1491
- "multiple": false,
1320
+ "multiple": true,
1492
1321
  "type": "option"
1493
1322
  },
1494
- "wait": {
1495
- "char": "w",
1496
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1497
- "name": "wait",
1498
- "summary": "Number of minutes to wait for command to complete and display results.",
1323
+ "target-org": {
1324
+ "char": "o",
1325
+ "name": "target-org",
1326
+ "noCacheDefault": true,
1327
+ "required": true,
1328
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1499
1329
  "hasDynamicHelp": true,
1500
- "helpValue": "<minutes>",
1501
1330
  "multiple": false,
1502
1331
  "type": "option"
1503
- }
1504
- },
1505
- "hasDynamicHelp": true,
1506
- "hiddenAliases": [],
1507
- "id": "project:deploy:report",
1508
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1509
- "pluginName": "@salesforce/plugin-deploy-retrieve",
1510
- "pluginType": "core",
1511
- "strict": true,
1512
- "summary": "Check or poll for the status of a deploy operation.",
1513
- "enableJsonFlag": true,
1514
- "isESM": true,
1515
- "relativePath": [
1516
- "lib",
1517
- "commands",
1518
- "project",
1519
- "deploy",
1520
- "report.js"
1521
- ],
1522
- "aliasPermutations": [
1523
- "deploy:metadata:report",
1524
- "metadata:deploy:report",
1525
- "metadata:report:deploy",
1526
- "deploy:report:metadata",
1527
- "report:deploy:metadata",
1528
- "report:metadata:deploy"
1529
- ],
1530
- "permutations": [
1531
- "project:deploy:report",
1532
- "deploy:project:report",
1533
- "deploy:report:project",
1534
- "project:report:deploy",
1535
- "report:project:deploy",
1536
- "report:deploy:project"
1537
- ]
1538
- },
1539
- "project:deploy:resume": {
1540
- "aliases": [
1541
- "deploy:metadata:resume"
1542
- ],
1543
- "args": {},
1544
- "deprecateAliases": true,
1545
- "description": "Use this command to resume watching a deploy operation if the original command times out or you specified the --async flag. Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations. This command doesn't resume the original operation itself, because the operation always continues after you've started it, regardless of whether you're watching it or not. When the deploy completes, source tracking information is updated as needed.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation.",
1546
- "examples": [
1547
- "Resume watching a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
1548
- "Resume watching the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
1549
- ],
1550
- "flags": {
1551
- "json": {
1552
- "description": "Format output as json.",
1553
- "helpGroup": "GLOBAL",
1554
- "name": "json",
1555
- "allowNo": false,
1556
- "type": "boolean"
1557
1332
  },
1558
- "flags-dir": {
1559
- "helpGroup": "GLOBAL",
1560
- "name": "flags-dir",
1561
- "summary": "Import flag values from a directory.",
1333
+ "tests": {
1334
+ "char": "t",
1335
+ "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
1336
+ "helpGroup": "Test",
1337
+ "name": "tests",
1338
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
1562
1339
  "hasDynamicHelp": false,
1563
- "multiple": false,
1340
+ "multiple": true,
1564
1341
  "type": "option"
1565
1342
  },
1566
- "concise": {
1567
- "exclusive": [
1568
- "verbose"
1569
- ],
1570
- "name": "concise",
1571
- "summary": "Show concise output of the deploy operation result.",
1572
- "allowNo": false,
1573
- "type": "boolean"
1574
- },
1575
- "job-id": {
1576
- "char": "i",
1577
- "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
1578
- "name": "job-id",
1579
- "summary": "Job ID of the deploy operation you want to resume.",
1343
+ "test-level": {
1344
+ "char": "l",
1345
+ "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\n If you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see [Running Tests in a Deployment](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
1346
+ "helpGroup": "Test",
1347
+ "name": "test-level",
1348
+ "summary": "Deployment Apex testing level.",
1580
1349
  "hasDynamicHelp": false,
1581
1350
  "multiple": false,
1351
+ "options": [
1352
+ "NoTestRun",
1353
+ "RunSpecifiedTests",
1354
+ "RunLocalTests",
1355
+ "RunAllTestsInOrg"
1356
+ ],
1582
1357
  "type": "option"
1583
1358
  },
1584
- "use-most-recent": {
1585
- "char": "r",
1586
- "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
1587
- "name": "use-most-recent",
1588
- "summary": "Use the job ID of the most recent deploy operation.",
1589
- "allowNo": false,
1590
- "type": "boolean"
1591
- },
1592
1359
  "verbose": {
1593
1360
  "exclusive": [
1594
1361
  "concise"
1595
1362
  ],
1596
1363
  "name": "verbose",
1597
- "summary": "Show verbose output of the deploy operation result.",
1364
+ "summary": "Show verbose output of the deploy result.",
1598
1365
  "allowNo": false,
1599
1366
  "type": "boolean"
1600
1367
  },
1601
1368
  "wait": {
1602
1369
  "char": "w",
1603
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy operation, run this command again. To check the status of the deploy operation, run \"<%= config.bin %> project deploy report\".",
1370
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1371
+ "exclusive": [
1372
+ "async"
1373
+ ],
1604
1374
  "name": "wait",
1605
- "summary": "Number of minutes to wait for the command to complete and display results.",
1375
+ "summary": "Number of minutes to wait for command to complete and display results.",
1606
1376
  "hasDynamicHelp": true,
1607
1377
  "helpValue": "<minutes>",
1608
1378
  "multiple": false,
1609
1379
  "type": "option"
1610
1380
  },
1381
+ "purge-on-delete": {
1382
+ "helpGroup": "Delete",
1383
+ "name": "purge-on-delete",
1384
+ "relationships": [
1385
+ {
1386
+ "type": "some",
1387
+ "flags": [
1388
+ "pre-destructive-changes",
1389
+ "manifest",
1390
+ "metadata-dir",
1391
+ "post-destructive-changes"
1392
+ ]
1393
+ }
1394
+ ],
1395
+ "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
1396
+ "allowNo": false,
1397
+ "type": "boolean"
1398
+ },
1399
+ "pre-destructive-changes": {
1400
+ "dependsOn": [
1401
+ "manifest"
1402
+ ],
1403
+ "helpGroup": "Delete",
1404
+ "name": "pre-destructive-changes",
1405
+ "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy.",
1406
+ "hasDynamicHelp": false,
1407
+ "multiple": false,
1408
+ "type": "option"
1409
+ },
1410
+ "post-destructive-changes": {
1411
+ "dependsOn": [
1412
+ "manifest"
1413
+ ],
1414
+ "helpGroup": "Delete",
1415
+ "name": "post-destructive-changes",
1416
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1417
+ "hasDynamicHelp": false,
1418
+ "multiple": false,
1419
+ "type": "option"
1420
+ },
1611
1421
  "coverage-formatters": {
1612
1422
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1613
1423
  "helpGroup": "Test",
@@ -1657,16 +1467,33 @@
1657
1467
  },
1658
1468
  "hasDynamicHelp": true,
1659
1469
  "hiddenAliases": [],
1660
- "id": "project:deploy:resume",
1470
+ "id": "project:deploy:start",
1661
1471
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1662
1472
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1663
1473
  "pluginType": "core",
1664
1474
  "strict": true,
1665
- "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1475
+ "summary": "Deploy metadata to an org from your local project.",
1666
1476
  "enableJsonFlag": true,
1477
+ "configurationVariablesSection": {
1478
+ "header": "CONFIGURATION VARIABLES",
1479
+ "body": [
1480
+ {
1481
+ "name": "target-org",
1482
+ "description": "Username or alias of the org that all commands run against by default. (sf only)"
1483
+ },
1484
+ {
1485
+ "name": "org-api-version",
1486
+ "description": "API version of your project. Default: API version of your Dev Hub org."
1487
+ }
1488
+ ]
1489
+ },
1667
1490
  "envVariablesSection": {
1668
1491
  "header": "ENVIRONMENT VARIABLES",
1669
1492
  "body": [
1493
+ {
1494
+ "name": "SF_TARGET_ORG",
1495
+ "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1496
+ },
1670
1497
  {
1671
1498
  "name": "SF_USE_PROGRESS_BAR",
1672
1499
  "description": "Set to false to disable the progress bar when running the metadata deploy command."
@@ -1712,47 +1539,34 @@
1712
1539
  "commands",
1713
1540
  "project",
1714
1541
  "deploy",
1715
- "resume.js"
1542
+ "start.js"
1716
1543
  ],
1717
1544
  "aliasPermutations": [
1718
- "deploy:metadata:resume",
1719
- "metadata:deploy:resume",
1720
- "metadata:resume:deploy",
1721
- "deploy:resume:metadata",
1722
- "resume:deploy:metadata",
1723
- "resume:metadata:deploy"
1545
+ "deploy:metadata",
1546
+ "metadata:deploy"
1724
1547
  ],
1725
1548
  "permutations": [
1726
- "project:deploy:resume",
1727
- "deploy:project:resume",
1728
- "deploy:resume:project",
1729
- "project:resume:deploy",
1730
- "resume:project:deploy",
1731
- "resume:deploy:project"
1549
+ "project:deploy:start",
1550
+ "deploy:project:start",
1551
+ "deploy:start:project",
1552
+ "project:start:deploy",
1553
+ "start:project:deploy",
1554
+ "start:deploy:project"
1732
1555
  ]
1733
1556
  },
1734
- "project:deploy:start": {
1557
+ "project:deploy:validate": {
1735
1558
  "aliases": [
1736
- "deploy:metadata"
1559
+ "deploy:metadata:validate"
1737
1560
  ],
1738
1561
  "args": {},
1739
1562
  "deprecateAliases": true,
1740
- "description": "You must run this command from within a project.\n\nMetadata components are deployed in source format by default. Deploy them in metadata format by specifying the --metadata-dir flag, which specifies the root directory or ZIP file that contains the metadata formatted files you want to deploy.\n\nIf your org allows source tracking, then this command tracks the changes in your source. Some orgs, such as production orgs, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo deploy multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
1563
+ "description": "Use this command to verify whether a deployment will succeed without actually deploying the metadata to your org. This command is similar to \"<%= config.bin %> project deploy start\", except you're required to run Apex tests, and the command returns a job ID rather than executing the deployment. If the validation succeeds, then you pass this job ID to the \"<%= config.bin %> project deploy quick\" command to actually deploy the metadata. This quick deploy takes less time because it skips running Apex tests. The job ID is valid for 10 days from when you started the validation. Validating first is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nYou must run this command from within a project.\n\nThis command doesn't support source-tracking. When you quick deploy with the resulting job ID, the source you deploy overwrites the corresponding metadata in your org.\n\nTo validate the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. If you want to validate a deployment with tests on a sandbox, use \"<%= config.bin %> project deploy start --dry-run --test-level RunLocalTests\" instead.",
1741
1564
  "examples": [
1742
- "Deploy local changes not in the org; uses your default org:\n<%= config.bin %> <%= command.id %>",
1743
- "Deploy all source files in the \"force-app\" directory to an org with alias \"my-scratch\"; show only concise output, in other words don't print a list of all the source that was deployed:\n<%= config.bin %> <%= command.id %> --source-dir force-app --target-org my-scratch --concise",
1744
- "Deploy all the Apex classes and custom objects that are in the \"force-app\" directory. The list views, layouts, etc, that are associated with the custom objects are also deployed. Both examples are equivalent:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes force-app/main/default/objects\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes --source-dir force-app/main/default/objects",
1745
- "Deploy all Apex classes that are in all package directories defined in the \"sfdx-project.json\" file:\n<%= config.bin %> <%= command.id %> --metadata ApexClass",
1746
- "Deploy a specific Apex class; ignore any conflicts between the local project and org (be careful with this flag, because it will overwrite the Apex class in the org if there are conflicts!):\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --ignore-conflicts",
1747
- "Deploy specific Apex classes that match a pattern; in this example, deploy Apex classes whose names contain the string \"MyApex\". Also ignore any deployment warnings (again, be careful with this flag! You typically want to see the warnings):\n<%= config.bin %> <%= command.id %> --metadata 'ApexClass:MyApex*' --ignore-warnings",
1748
- "Deploy a custom object called ExcitingObject that's in the SBQQ namespace:\nsf <%= command.id %> --metadata CustomObject:SBQQ__ExcitingObject",
1749
- "Deploy all custom objects in the SBQQ namespace by using a wildcard and quotes:\nsf <%= command.id %> --metadata 'CustomObject:SBQQ__*'",
1750
- "Deploy all custom objects and Apex classes found in all defined package directories (both examples are equivalent):\n<%= config.bin %> <%= command.id %> --metadata CustomObject ApexClass\n<%= config.bin %> <%= command.id %> --metadata CustomObject --metadata ApexClass",
1751
- "Deploy all Apex classes and a profile that has a space in its name:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --metadata \"Profile:My Profile\"",
1752
- "Deploy all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml",
1753
- "Run the tests that aren’t in any managed packages as part of a deployment:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests",
1754
- "Deploy all metadata formatted files in the \"MDAPI\" directory:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI",
1755
- "Deploy all metadata formatted files in the \"MDAPI\" directory; items listed in the MDAPI/destructiveChangesPre.xml and MDAPI/destructiveChangesPost.xml manifests are immediately eligible for deletion rather than stored in the Recycle Bin:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI --purge-on-delete"
1565
+ "NOTE: These examples focus on validating large deployments. See the help for \"<%= config.bin %> project deploy start\" for examples of deploying smaller sets of metadata which you can also use to validate.",
1566
+ "Validate the deployment of all source files in the \"force-app\" directory to the default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
1567
+ "Validate the deployment of all source files in two directories: \"force-app\" and \"force-app-utils\":\n<%= config.bin %> <%= command.id %> --source-dir force-app --source-dir force-app-utils",
1568
+ "Asynchronously validate the deployment and run all tests in the org with alias \"my-prod-org\"; command immediately returns the job ID:\n<%= config.bin %> <%= command.id %> --source-dir force-app --async --test-level RunAllTestsInOrg --target-org my-prod-org",
1569
+ "Validate the deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
1756
1570
  ],
1757
1571
  "flags": {
1758
1572
  "json": {
@@ -1774,16 +1588,13 @@
1774
1588
  "char": "a",
1775
1589
  "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1776
1590
  "name": "api-version",
1777
- "summary": "Target API version for the deploy.",
1591
+ "summary": "Target API version for the validation.",
1778
1592
  "hasDynamicHelp": false,
1779
1593
  "multiple": false,
1780
1594
  "type": "option"
1781
1595
  },
1782
1596
  "async": {
1783
- "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1784
- "exclusive": [
1785
- "wait"
1786
- ],
1597
+ "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
1787
1598
  "name": "async",
1788
1599
  "summary": "Run the command asynchronously.",
1789
1600
  "allowNo": false,
@@ -1794,75 +1605,40 @@
1794
1605
  "verbose"
1795
1606
  ],
1796
1607
  "name": "concise",
1797
- "summary": "Show concise output of the deploy result.",
1798
- "allowNo": false,
1799
- "type": "boolean"
1800
- },
1801
- "dry-run": {
1802
- "name": "dry-run",
1803
- "summary": "Validate deploy and run Apex tests but don’t save to the org.",
1804
- "allowNo": false,
1805
- "type": "boolean"
1806
- },
1807
- "ignore-conflicts": {
1808
- "char": "c",
1809
- "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
1810
- "name": "ignore-conflicts",
1811
- "summary": "Ignore conflicts and deploy local files, even if they overwrite changes in the org.",
1812
- "allowNo": false,
1813
- "type": "boolean"
1814
- },
1815
- "ignore-errors": {
1816
- "char": "r",
1817
- "description": "Never use this flag when deploying to a production org. If you specify it, components without errors are deployed and components with errors are skipped, and could result in an inconsistent production org.",
1818
- "name": "ignore-errors",
1819
- "summary": "Ignore any errors and don’t roll back deployment.",
1820
- "allowNo": false,
1821
- "type": "boolean"
1822
- },
1823
- "ignore-warnings": {
1824
- "char": "g",
1825
- "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
1826
- "name": "ignore-warnings",
1827
- "summary": "Ignore warnings and allow a deployment to complete successfully.",
1608
+ "summary": "Show concise output of the validation result.",
1828
1609
  "allowNo": false,
1829
1610
  "type": "boolean"
1830
1611
  },
1831
1612
  "manifest": {
1832
1613
  "char": "x",
1833
1614
  "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1834
- "exclusive": [
1835
- "source-dir",
1836
- "metadata",
1837
- "metadata-dir"
1838
- ],
1839
1615
  "helpGroup": "Source Format",
1840
1616
  "name": "manifest",
1841
- "summary": "Full file path for manifest (package.xml) of components to deploy.",
1617
+ "summary": "Full file path for manifest (package.xml) of components to validate for deployment.",
1842
1618
  "hasDynamicHelp": false,
1843
1619
  "multiple": false,
1844
1620
  "type": "option"
1845
1621
  },
1846
1622
  "metadata": {
1847
1623
  "char": "m",
1848
- "exclusive": [
1849
- "manifest",
1850
- "source-dir",
1851
- "metadata-dir"
1852
- ],
1853
1624
  "helpGroup": "Source Format",
1854
1625
  "name": "metadata",
1855
- "summary": "Metadata component names to deploy. Wildcards (`*` ) supported as long as you use quotes, such as `ApexClass:MyClass*`.",
1626
+ "summary": "Metadata component names to validate for deployment.",
1627
+ "hasDynamicHelp": false,
1628
+ "multiple": true,
1629
+ "type": "option"
1630
+ },
1631
+ "source-dir": {
1632
+ "char": "d",
1633
+ "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1634
+ "helpGroup": "Source Format",
1635
+ "name": "source-dir",
1636
+ "summary": "Path to the local source files to validate for deployment.",
1856
1637
  "hasDynamicHelp": false,
1857
1638
  "multiple": true,
1858
1639
  "type": "option"
1859
1640
  },
1860
1641
  "metadata-dir": {
1861
- "exclusive": [
1862
- "manifest",
1863
- "source-dir",
1864
- "metadata"
1865
- ],
1866
1642
  "helpGroup": "Metadata API Format",
1867
1643
  "name": "metadata-dir",
1868
1644
  "summary": "Root of directory or zip file of metadata formatted files to deploy.",
@@ -1880,21 +1656,6 @@
1880
1656
  "allowNo": false,
1881
1657
  "type": "boolean"
1882
1658
  },
1883
- "source-dir": {
1884
- "char": "d",
1885
- "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1886
- "exclusive": [
1887
- "manifest",
1888
- "metadata",
1889
- "metadata-dir"
1890
- ],
1891
- "helpGroup": "Source Format",
1892
- "name": "source-dir",
1893
- "summary": "Path to the local source files to deploy.",
1894
- "hasDynamicHelp": false,
1895
- "multiple": true,
1896
- "type": "option"
1897
- },
1898
1659
  "target-org": {
1899
1660
  "char": "o",
1900
1661
  "name": "target-org",
@@ -1917,17 +1678,17 @@
1917
1678
  },
1918
1679
  "test-level": {
1919
1680
  "char": "l",
1920
- "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\n If you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see [Running Tests in a Deployment](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
1681
+ "description": "Valid values are:\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.",
1921
1682
  "helpGroup": "Test",
1922
1683
  "name": "test-level",
1923
1684
  "summary": "Deployment Apex testing level.",
1685
+ "default": "RunLocalTests",
1924
1686
  "hasDynamicHelp": false,
1925
1687
  "multiple": false,
1926
1688
  "options": [
1927
- "NoTestRun",
1928
- "RunSpecifiedTests",
1689
+ "RunAllTestsInOrg",
1929
1690
  "RunLocalTests",
1930
- "RunAllTestsInOrg"
1691
+ "RunSpecifiedTests"
1931
1692
  ],
1932
1693
  "type": "option"
1933
1694
  },
@@ -1936,63 +1697,28 @@
1936
1697
  "concise"
1937
1698
  ],
1938
1699
  "name": "verbose",
1939
- "summary": "Show verbose output of the deploy result.",
1700
+ "summary": "Show verbose output of the validation result.",
1940
1701
  "allowNo": false,
1941
1702
  "type": "boolean"
1942
1703
  },
1943
1704
  "wait": {
1944
1705
  "char": "w",
1945
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1946
- "exclusive": [
1947
- "async"
1948
- ],
1706
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
1949
1707
  "name": "wait",
1950
- "summary": "Number of minutes to wait for command to complete and display results.",
1708
+ "summary": "Number of minutes to wait for the command to complete and display results.",
1951
1709
  "hasDynamicHelp": true,
1952
1710
  "helpValue": "<minutes>",
1953
1711
  "multiple": false,
1954
1712
  "type": "option"
1955
1713
  },
1956
- "purge-on-delete": {
1957
- "helpGroup": "Delete",
1958
- "name": "purge-on-delete",
1959
- "relationships": [
1960
- {
1961
- "type": "some",
1962
- "flags": [
1963
- "pre-destructive-changes",
1964
- "manifest",
1965
- "metadata-dir",
1966
- "post-destructive-changes"
1967
- ]
1968
- }
1969
- ],
1970
- "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
1714
+ "ignore-warnings": {
1715
+ "char": "g",
1716
+ "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
1717
+ "name": "ignore-warnings",
1718
+ "summary": "Ignore warnings and allow a deployment to complete successfully.",
1971
1719
  "allowNo": false,
1972
1720
  "type": "boolean"
1973
1721
  },
1974
- "pre-destructive-changes": {
1975
- "dependsOn": [
1976
- "manifest"
1977
- ],
1978
- "helpGroup": "Delete",
1979
- "name": "pre-destructive-changes",
1980
- "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy.",
1981
- "hasDynamicHelp": false,
1982
- "multiple": false,
1983
- "type": "option"
1984
- },
1985
- "post-destructive-changes": {
1986
- "dependsOn": [
1987
- "manifest"
1988
- ],
1989
- "helpGroup": "Delete",
1990
- "name": "post-destructive-changes",
1991
- "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1992
- "hasDynamicHelp": false,
1993
- "multiple": false,
1994
- "type": "option"
1995
- },
1996
1722
  "coverage-formatters": {
1997
1723
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1998
1724
  "helpGroup": "Test",
@@ -2038,16 +1764,57 @@
2038
1764
  "hasDynamicHelp": false,
2039
1765
  "multiple": false,
2040
1766
  "type": "option"
1767
+ },
1768
+ "purge-on-delete": {
1769
+ "dependsOn": [
1770
+ "manifest"
1771
+ ],
1772
+ "helpGroup": "Delete",
1773
+ "name": "purge-on-delete",
1774
+ "relationships": [
1775
+ {
1776
+ "type": "some",
1777
+ "flags": [
1778
+ "pre-destructive-changes",
1779
+ "post-destructive-changes"
1780
+ ]
1781
+ }
1782
+ ],
1783
+ "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
1784
+ "allowNo": false,
1785
+ "type": "boolean"
1786
+ },
1787
+ "pre-destructive-changes": {
1788
+ "dependsOn": [
1789
+ "manifest"
1790
+ ],
1791
+ "helpGroup": "Delete",
1792
+ "name": "pre-destructive-changes",
1793
+ "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy",
1794
+ "hasDynamicHelp": false,
1795
+ "multiple": false,
1796
+ "type": "option"
1797
+ },
1798
+ "post-destructive-changes": {
1799
+ "dependsOn": [
1800
+ "manifest"
1801
+ ],
1802
+ "helpGroup": "Delete",
1803
+ "name": "post-destructive-changes",
1804
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1805
+ "hasDynamicHelp": false,
1806
+ "multiple": false,
1807
+ "type": "option"
2041
1808
  }
2042
1809
  },
2043
1810
  "hasDynamicHelp": true,
2044
1811
  "hiddenAliases": [],
2045
- "id": "project:deploy:start",
1812
+ "id": "project:deploy:validate",
2046
1813
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2047
1814
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2048
1815
  "pluginType": "core",
2049
1816
  "strict": true,
2050
- "summary": "Deploy metadata to an org from your local project.",
1817
+ "summary": "Validate a metadata deployment without actually executing it.",
2051
1818
  "enableJsonFlag": true,
2052
1819
  "configurationVariablesSection": {
2053
1820
  "header": "CONFIGURATION VARIABLES",
@@ -2114,34 +1881,37 @@
2114
1881
  "commands",
2115
1882
  "project",
2116
1883
  "deploy",
2117
- "start.js"
1884
+ "validate.js"
2118
1885
  ],
2119
1886
  "aliasPermutations": [
2120
- "deploy:metadata",
2121
- "metadata:deploy"
1887
+ "deploy:metadata:validate",
1888
+ "metadata:deploy:validate",
1889
+ "metadata:validate:deploy",
1890
+ "deploy:validate:metadata",
1891
+ "validate:deploy:metadata",
1892
+ "validate:metadata:deploy"
2122
1893
  ],
2123
1894
  "permutations": [
2124
- "project:deploy:start",
2125
- "deploy:project:start",
2126
- "deploy:start:project",
2127
- "project:start:deploy",
2128
- "start:project:deploy",
2129
- "start:deploy:project"
1895
+ "project:deploy:validate",
1896
+ "deploy:project:validate",
1897
+ "deploy:validate:project",
1898
+ "project:validate:deploy",
1899
+ "validate:project:deploy",
1900
+ "validate:deploy:project"
2130
1901
  ]
2131
1902
  },
2132
- "project:deploy:validate": {
1903
+ "project:delete:source": {
2133
1904
  "aliases": [
2134
- "deploy:metadata:validate"
1905
+ "force:source:delete"
2135
1906
  ],
2136
1907
  "args": {},
2137
1908
  "deprecateAliases": true,
2138
- "description": "Use this command to verify whether a deployment will succeed without actually deploying the metadata to your org. This command is similar to \"<%= config.bin %> project deploy start\", except you're required to run Apex tests, and the command returns a job ID rather than executing the deployment. If the validation succeeds, then you pass this job ID to the \"<%= config.bin %> project deploy quick\" command to actually deploy the metadata. This quick deploy takes less time because it skips running Apex tests. The job ID is valid for 10 days from when you started the validation. Validating first is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nYou must run this command from within a project.\n\nThis command doesn't support source-tracking. When you quick deploy with the resulting job ID, the source you deploy overwrites the corresponding metadata in your org.\n\nTo validate the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. If you want to validate a deployment with tests on a sandbox, use \"<%= config.bin %> project deploy start --dry-run --test-level RunLocalTests\" instead.",
1909
+ "description": "Use this command to delete components from orgs that don’t have source tracking. To remove deleted items from orgs that have source tracking enabled, \"<%= config.bin %> project deploy start\".\n\nWhen you run this command, both the local source file and the metadata component in the org are deleted.\n\nTo delete multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
2139
1910
  "examples": [
2140
- "NOTE: These examples focus on validating large deployments. See the help for \"<%= config.bin %> project deploy start\" for examples of deploying smaller sets of metadata which you can also use to validate.",
2141
- "Validate the deployment of all source files in the \"force-app\" directory to the default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
2142
- "Validate the deployment of all source files in two directories: \"force-app\" and \"force-app-utils\":\n<%= config.bin %> <%= command.id %> --source-dir force-app --source-dir force-app-utils",
2143
- "Asynchronously validate the deployment and run all tests in the org with alias \"my-prod-org\"; command immediately returns the job ID:\n<%= config.bin %> <%= command.id %> --source-dir force-app --async --test-level RunAllTestsInOrg --target-org my-prod-org",
2144
- "Validate the deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
1911
+ "Delete all local Apex source files and all Apex classes from the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
1912
+ "Delete a specific Apex class and a Profile that has a space in it from your default org; don't prompt for confirmation:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyFabulousApexClass --metadata \"Profile: My Profile\" --no-prompt",
1913
+ "Run the tests that aren’t in any managed packages as part of the deletion; if the delete succeeds, and the org has source-tracking enabled, update the source tracking information:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests --track-source",
1914
+ "Delete the Apex source files in a directory and the corresponding components from your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes"
2145
1915
  ],
2146
1916
  "flags": {
2147
1917
  "json": {
@@ -2160,79 +1930,250 @@
2160
1930
  "type": "option"
2161
1931
  },
2162
1932
  "api-version": {
2163
- "char": "a",
2164
- "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1933
+ "aliases": [
1934
+ "apiversion"
1935
+ ],
1936
+ "deprecateAliases": true,
1937
+ "description": "Override the api version used for api requests made by this command",
2165
1938
  "name": "api-version",
2166
- "summary": "Target API version for the validation.",
2167
1939
  "hasDynamicHelp": false,
2168
1940
  "multiple": false,
2169
1941
  "type": "option"
2170
1942
  },
2171
- "async": {
2172
- "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
2173
- "name": "async",
2174
- "summary": "Run the command asynchronously.",
2175
- "allowNo": false,
2176
- "type": "boolean"
1943
+ "loglevel": {
1944
+ "deprecated": {
1945
+ "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
1946
+ },
1947
+ "hidden": true,
1948
+ "name": "loglevel",
1949
+ "hasDynamicHelp": false,
1950
+ "multiple": false,
1951
+ "type": "option"
2177
1952
  },
2178
- "concise": {
2179
- "exclusive": [
2180
- "verbose"
1953
+ "target-org": {
1954
+ "aliases": [
1955
+ "targetusername",
1956
+ "u"
2181
1957
  ],
2182
- "name": "concise",
2183
- "summary": "Show concise output of the validation result.",
1958
+ "char": "o",
1959
+ "deprecateAliases": true,
1960
+ "name": "target-org",
1961
+ "noCacheDefault": true,
1962
+ "required": true,
1963
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1964
+ "hasDynamicHelp": true,
1965
+ "multiple": false,
1966
+ "type": "option"
1967
+ },
1968
+ "check-only": {
1969
+ "aliases": [
1970
+ "checkonly"
1971
+ ],
1972
+ "char": "c",
1973
+ "deprecateAliases": true,
1974
+ "description": "IMPORTANT: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.\n\nValidates the deleted metadata and runs all Apex tests, but prevents the deletion from being saved to the org.\n\nIf you change a field type from Master-Detail to Lookup or vice versa, that change isn’t supported when using the --check-only flag to test a deletion (validation). This kind of change isn’t supported for test deletions to avoid the risk of data loss or corruption. If a change that isn’t supported for test deletions is included in a deletion package, the test deletion fails and issues an error.\n\nIf your deletion package changes a field type from Master-Detail to Lookup or vice versa, you can still validate the changes prior to deploying to Production by performing a full deletion to another test Sandbox. A full deletion includes a validation of the changes as part of the deletion process.\n\nNote: A Metadata API deletion that includes Master-Detail relationships deletes all detail records in the Recycle Bin in the following cases.\n\n 1. For a deletion with a new Master-Detail field, soft delete (send to the Recycle Bin) all detail records before proceeding to delete the Master-Detail field, or the deletion fails. During the deletion, detail records are permanently deleted from the Recycle Bin and cannot be recovered.\n\n 2. For a deletion that converts a Lookup field relationship to a Master-Detail relationship, detail records must reference a master record or be soft-deleted (sent to the Recycle Bin) for the deletion to succeed. However, a successful deletion permanently deletes any detail records in the Recycle Bin.",
1975
+ "name": "check-only",
1976
+ "summary": "Validate delete command but don't delete anything from the org or the local project.",
2184
1977
  "allowNo": false,
2185
1978
  "type": "boolean"
2186
1979
  },
2187
- "manifest": {
2188
- "char": "x",
2189
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
2190
- "helpGroup": "Source Format",
2191
- "name": "manifest",
2192
- "summary": "Full file path for manifest (package.xml) of components to validate for deployment.",
2193
- "hasDynamicHelp": false,
1980
+ "wait": {
1981
+ "char": "w",
1982
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
1983
+ "name": "wait",
1984
+ "summary": "Number of minutes to wait for the command to finish.",
1985
+ "hasDynamicHelp": true,
2194
1986
  "multiple": false,
2195
1987
  "type": "option"
2196
1988
  },
2197
- "metadata": {
2198
- "char": "m",
2199
- "helpGroup": "Source Format",
2200
- "name": "metadata",
2201
- "summary": "Metadata component names to validate for deployment.",
2202
- "hasDynamicHelp": false,
2203
- "multiple": true,
2204
- "type": "option"
2205
- },
2206
- "source-dir": {
2207
- "char": "d",
2208
- "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
2209
- "helpGroup": "Source Format",
2210
- "name": "source-dir",
2211
- "summary": "Path to the local source files to validate for deployment.",
1989
+ "tests": {
1990
+ "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
1991
+ "helpGroup": "Test",
1992
+ "name": "tests",
1993
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
2212
1994
  "hasDynamicHelp": false,
2213
1995
  "multiple": true,
2214
1996
  "type": "option"
2215
1997
  },
2216
- "metadata-dir": {
2217
- "helpGroup": "Metadata API Format",
2218
- "name": "metadata-dir",
2219
- "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1998
+ "test-level": {
1999
+ "aliases": [
2000
+ "testlevel"
2001
+ ],
2002
+ "char": "l",
2003
+ "deprecateAliases": true,
2004
+ "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\nIf you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see “Running Tests in a Deployment” in the Metadata API Developer Guide.",
2005
+ "helpGroup": "Test",
2006
+ "name": "test-level",
2007
+ "summary": "Deployment Apex testing level.",
2220
2008
  "hasDynamicHelp": false,
2221
2009
  "multiple": false,
2010
+ "options": [
2011
+ "NoTestRun",
2012
+ "RunSpecifiedTests",
2013
+ "RunLocalTests",
2014
+ "RunAllTestsInOrg"
2015
+ ],
2222
2016
  "type": "option"
2223
2017
  },
2224
- "single-package": {
2018
+ "no-prompt": {
2019
+ "aliases": [
2020
+ "noprompt"
2021
+ ],
2022
+ "char": "r",
2023
+ "deprecateAliases": true,
2024
+ "name": "no-prompt",
2025
+ "summary": "Don't prompt for delete confirmation.",
2026
+ "allowNo": false,
2027
+ "type": "boolean"
2028
+ },
2029
+ "metadata": {
2030
+ "char": "m",
2031
+ "description": "If you specify this flag, don’t specify --source-dir.",
2032
+ "name": "metadata",
2033
+ "summary": "Metadata components to delete.",
2034
+ "delimiter": ",",
2035
+ "hasDynamicHelp": false,
2036
+ "multiple": true,
2037
+ "type": "option"
2038
+ },
2039
+ "source-dir": {
2040
+ "aliases": [
2041
+ "sourcepath"
2042
+ ],
2043
+ "char": "p",
2044
+ "deprecateAliases": true,
2045
+ "description": "The supplied paths can be a single file (in which case the operation is applied to only one file) or a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --metadata.",
2046
+ "name": "source-dir",
2047
+ "summary": "Source file paths to delete.",
2048
+ "delimiter": ",",
2049
+ "hasDynamicHelp": false,
2050
+ "multiple": true,
2051
+ "type": "option"
2052
+ },
2053
+ "track-source": {
2054
+ "aliases": [
2055
+ "tracksource"
2056
+ ],
2057
+ "char": "t",
2058
+ "deprecateAliases": true,
2059
+ "exclusive": [
2060
+ "check-only"
2061
+ ],
2062
+ "name": "track-source",
2063
+ "summary": "If the delete succeeds, update the source tracking information.",
2064
+ "allowNo": false,
2065
+ "type": "boolean"
2066
+ },
2067
+ "force-overwrite": {
2068
+ "aliases": [
2069
+ "forceoverwrite"
2070
+ ],
2071
+ "char": "f",
2225
2072
  "dependsOn": [
2226
- "metadata-dir"
2073
+ "track-source"
2227
2074
  ],
2228
- "helpGroup": "Metadata API Format",
2229
- "name": "single-package",
2230
- "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
2075
+ "deprecateAliases": true,
2076
+ "name": "force-overwrite",
2077
+ "summary": "Ignore conflict warnings and overwrite changes to the org.",
2078
+ "allowNo": false,
2079
+ "type": "boolean"
2080
+ },
2081
+ "verbose": {
2082
+ "name": "verbose",
2083
+ "summary": "Verbose output of the delete result.",
2084
+ "allowNo": false,
2085
+ "type": "boolean"
2086
+ }
2087
+ },
2088
+ "hasDynamicHelp": true,
2089
+ "hiddenAliases": [],
2090
+ "id": "project:delete:source",
2091
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2092
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
2093
+ "pluginType": "core",
2094
+ "strict": true,
2095
+ "summary": "Delete source from your project and from a non-source-tracked org.",
2096
+ "enableJsonFlag": true,
2097
+ "requiresProject": true,
2098
+ "isESM": true,
2099
+ "relativePath": [
2100
+ "lib",
2101
+ "commands",
2102
+ "project",
2103
+ "delete",
2104
+ "source.js"
2105
+ ],
2106
+ "aliasPermutations": [
2107
+ "force:source:delete",
2108
+ "source:force:delete",
2109
+ "source:delete:force",
2110
+ "force:delete:source",
2111
+ "delete:force:source",
2112
+ "delete:source:force"
2113
+ ],
2114
+ "permutations": [
2115
+ "project:delete:source",
2116
+ "delete:project:source",
2117
+ "delete:source:project",
2118
+ "project:source:delete",
2119
+ "source:project:delete",
2120
+ "source:delete:project"
2121
+ ]
2122
+ },
2123
+ "project:delete:tracking": {
2124
+ "aliases": [
2125
+ "force:source:tracking:clear"
2126
+ ],
2127
+ "args": {},
2128
+ "deprecateAliases": true,
2129
+ "description": "WARNING: This command deletes or overwrites all existing source tracking files. Use with extreme caution.\n\nDeletes all local source tracking information. When you next run 'project deploy preview', Salesforce CLI displays all local and remote files as changed, and any files with the same name are listed as conflicts.",
2130
+ "examples": [
2131
+ "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
2132
+ ],
2133
+ "flags": {
2134
+ "json": {
2135
+ "description": "Format output as json.",
2136
+ "helpGroup": "GLOBAL",
2137
+ "name": "json",
2231
2138
  "allowNo": false,
2232
2139
  "type": "boolean"
2233
2140
  },
2141
+ "flags-dir": {
2142
+ "helpGroup": "GLOBAL",
2143
+ "name": "flags-dir",
2144
+ "summary": "Import flag values from a directory.",
2145
+ "hasDynamicHelp": false,
2146
+ "multiple": false,
2147
+ "type": "option"
2148
+ },
2149
+ "api-version": {
2150
+ "aliases": [
2151
+ "apiversion"
2152
+ ],
2153
+ "deprecateAliases": true,
2154
+ "description": "Override the api version used for api requests made by this command",
2155
+ "name": "api-version",
2156
+ "hasDynamicHelp": false,
2157
+ "multiple": false,
2158
+ "type": "option"
2159
+ },
2160
+ "loglevel": {
2161
+ "deprecated": {
2162
+ "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
2163
+ },
2164
+ "hidden": true,
2165
+ "name": "loglevel",
2166
+ "hasDynamicHelp": false,
2167
+ "multiple": false,
2168
+ "type": "option"
2169
+ },
2234
2170
  "target-org": {
2171
+ "aliases": [
2172
+ "targetusername",
2173
+ "u"
2174
+ ],
2235
2175
  "char": "o",
2176
+ "deprecateAliases": true,
2236
2177
  "name": "target-org",
2237
2178
  "noCacheDefault": true,
2238
2179
  "required": true,
@@ -2241,238 +2182,297 @@
2241
2182
  "multiple": false,
2242
2183
  "type": "option"
2243
2184
  },
2244
- "tests": {
2245
- "char": "t",
2246
- "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
2247
- "helpGroup": "Test",
2248
- "name": "tests",
2249
- "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
2185
+ "no-prompt": {
2186
+ "aliases": [
2187
+ "noprompt"
2188
+ ],
2189
+ "char": "p",
2190
+ "deprecateAliases": true,
2191
+ "name": "no-prompt",
2192
+ "summary": "Don't prompt for source tracking override confirmation.",
2193
+ "allowNo": false,
2194
+ "type": "boolean"
2195
+ }
2196
+ },
2197
+ "hasDynamicHelp": true,
2198
+ "hiddenAliases": [],
2199
+ "id": "project:delete:tracking",
2200
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2201
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
2202
+ "pluginType": "core",
2203
+ "strict": true,
2204
+ "summary": "Delete all local source tracking information.",
2205
+ "enableJsonFlag": true,
2206
+ "requiresProject": true,
2207
+ "isESM": true,
2208
+ "relativePath": [
2209
+ "lib",
2210
+ "commands",
2211
+ "project",
2212
+ "delete",
2213
+ "tracking.js"
2214
+ ],
2215
+ "aliasPermutations": [
2216
+ "force:source:tracking:clear",
2217
+ "source:force:tracking:clear",
2218
+ "source:tracking:force:clear",
2219
+ "source:tracking:clear:force",
2220
+ "force:tracking:source:clear",
2221
+ "tracking:force:source:clear",
2222
+ "tracking:source:force:clear",
2223
+ "tracking:source:clear:force",
2224
+ "force:tracking:clear:source",
2225
+ "tracking:force:clear:source",
2226
+ "tracking:clear:force:source",
2227
+ "tracking:clear:source:force",
2228
+ "force:source:clear:tracking",
2229
+ "source:force:clear:tracking",
2230
+ "source:clear:force:tracking",
2231
+ "source:clear:tracking:force",
2232
+ "force:clear:source:tracking",
2233
+ "clear:force:source:tracking",
2234
+ "clear:source:force:tracking",
2235
+ "clear:source:tracking:force",
2236
+ "force:clear:tracking:source",
2237
+ "clear:force:tracking:source",
2238
+ "clear:tracking:force:source",
2239
+ "clear:tracking:source:force"
2240
+ ],
2241
+ "permutations": [
2242
+ "project:delete:tracking",
2243
+ "delete:project:tracking",
2244
+ "delete:tracking:project",
2245
+ "project:tracking:delete",
2246
+ "tracking:project:delete",
2247
+ "tracking:delete:project"
2248
+ ]
2249
+ },
2250
+ "project:generate:manifest": {
2251
+ "aliases": [
2252
+ "force:source:manifest:create"
2253
+ ],
2254
+ "args": {},
2255
+ "deprecateAliases": true,
2256
+ "description": "Create a manifest from a list of metadata components (--metadata) or from one or more local directories that contain source files (--source-dir). You can specify either of these flags, not both.\n\nUse --type to specify the type of manifest you want to create. The resulting manifest files have specific names, such as the standard package.xml or destructiveChanges.xml to delete metadata. Valid values for this flag, and their respective file names, are:\n\n * package : package.xml (default)\n * pre : destructiveChangesPre.xml\n * post : destructiveChangesPost.xml\n * destroy : destructiveChanges.xml\n\nSee https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_deleting_files.htm for information about these destructive manifest files.\n\nUse --name to specify a custom name for the generated manifest if the pre-defined ones don’t suit your needs. You can specify either --type or --name, but not both.\n\nTo include multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --include-packages and --source-dir.\n\nTo build a manifest from the metadata in an org, use the --from-org flag. You can combine --from-org with the --metadata flag to include only certain metadata types, or with the --excluded-metadata flag to exclude certain metadata types. When building a manifest from an org, the command makes many concurrent API calls to discover the metadata that exists in the org. To limit the number of concurrent requests, use the SF_LIST_METADATA_BATCH_SIZE environment variable and set it to a size that works best for your org and environment. If you experience timeouts or inconsistent manifest contents, then setting this environment variable can improve accuracy. However, the command takes longer to run because it sends fewer requests at a time.",
2257
+ "examples": [
2258
+ "Create a manifest for deploying or retrieving all Apex classes and custom objects:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass --metadata CustomObject",
2259
+ "Create a manifest for deleting the specified Apex class:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --type destroy",
2260
+ "Create a manifest for deploying or retrieving all the metadata components in the specified local directory; name the file myNewManifest.xml:\n$ <%= config.bin %> <%= command.id %> --source-dir force-app --name myNewManifest",
2261
+ "Create a manifest from the metadata components in the specified org and include metadata in any unlocked packages:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --include-packages unlocked",
2262
+ "Create a manifest from specific metadata types in an org:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --metadata ApexClass,CustomObject,CustomLabels",
2263
+ "Create a manifest from all metadata components in an org excluding specific metadata types:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --excluded-metadata StandardValueSet"
2264
+ ],
2265
+ "flags": {
2266
+ "json": {
2267
+ "description": "Format output as json.",
2268
+ "helpGroup": "GLOBAL",
2269
+ "name": "json",
2270
+ "allowNo": false,
2271
+ "type": "boolean"
2272
+ },
2273
+ "flags-dir": {
2274
+ "helpGroup": "GLOBAL",
2275
+ "name": "flags-dir",
2276
+ "summary": "Import flag values from a directory.",
2277
+ "hasDynamicHelp": false,
2278
+ "multiple": false,
2279
+ "type": "option"
2280
+ },
2281
+ "api-version": {
2282
+ "aliases": [
2283
+ "apiversion"
2284
+ ],
2285
+ "deprecateAliases": true,
2286
+ "description": "Override the api version used for api requests made by this command",
2287
+ "name": "api-version",
2288
+ "hasDynamicHelp": false,
2289
+ "multiple": false,
2290
+ "type": "option"
2291
+ },
2292
+ "loglevel": {
2293
+ "deprecated": {
2294
+ "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
2295
+ },
2296
+ "hidden": true,
2297
+ "name": "loglevel",
2298
+ "hasDynamicHelp": false,
2299
+ "multiple": false,
2300
+ "type": "option"
2301
+ },
2302
+ "metadata": {
2303
+ "char": "m",
2304
+ "name": "metadata",
2305
+ "summary": "Names of metadata components to include in the manifest.",
2306
+ "delimiter": ",",
2250
2307
  "hasDynamicHelp": false,
2251
2308
  "multiple": true,
2252
2309
  "type": "option"
2253
2310
  },
2254
- "test-level": {
2255
- "char": "l",
2256
- "description": "Valid values are:\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.",
2257
- "helpGroup": "Test",
2258
- "name": "test-level",
2259
- "summary": "Deployment Apex testing level.",
2260
- "default": "RunLocalTests",
2311
+ "source-dir": {
2312
+ "aliases": [
2313
+ "sourcepath"
2314
+ ],
2315
+ "char": "p",
2316
+ "deprecateAliases": true,
2317
+ "name": "source-dir",
2318
+ "summary": "Paths to the local source files to include in the manifest.",
2319
+ "delimiter": ",",
2320
+ "hasDynamicHelp": false,
2321
+ "multiple": true,
2322
+ "type": "option"
2323
+ },
2324
+ "name": {
2325
+ "aliases": [
2326
+ "manifestname"
2327
+ ],
2328
+ "char": "n",
2329
+ "deprecateAliases": true,
2330
+ "exclusive": [
2331
+ "type"
2332
+ ],
2333
+ "name": "name",
2334
+ "summary": "Name of a custom manifest file to create.",
2261
2335
  "hasDynamicHelp": false,
2262
2336
  "multiple": false,
2263
- "options": [
2264
- "RunAllTestsInOrg",
2265
- "RunLocalTests",
2266
- "RunSpecifiedTests"
2267
- ],
2268
2337
  "type": "option"
2269
2338
  },
2270
- "verbose": {
2339
+ "type": {
2340
+ "aliases": [
2341
+ "manifesttype"
2342
+ ],
2343
+ "char": "t",
2344
+ "deprecateAliases": true,
2271
2345
  "exclusive": [
2272
- "concise"
2346
+ "name"
2273
2347
  ],
2274
- "name": "verbose",
2275
- "summary": "Show verbose output of the validation result.",
2276
- "allowNo": false,
2277
- "type": "boolean"
2278
- },
2279
- "wait": {
2280
- "char": "w",
2281
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
2282
- "name": "wait",
2283
- "summary": "Number of minutes to wait for the command to complete and display results.",
2284
- "hasDynamicHelp": true,
2285
- "helpValue": "<minutes>",
2348
+ "name": "type",
2349
+ "summary": "Type of manifest to create; the type determines the name of the created file.",
2350
+ "hasDynamicHelp": false,
2286
2351
  "multiple": false,
2352
+ "options": [
2353
+ "pre",
2354
+ "post",
2355
+ "destroy",
2356
+ "package"
2357
+ ],
2287
2358
  "type": "option"
2288
2359
  },
2289
- "ignore-warnings": {
2290
- "char": "g",
2291
- "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
2292
- "name": "ignore-warnings",
2293
- "summary": "Ignore warnings and allow a deployment to complete successfully.",
2294
- "allowNo": false,
2295
- "type": "boolean"
2296
- },
2297
- "coverage-formatters": {
2298
- "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
2299
- "helpGroup": "Test",
2300
- "name": "coverage-formatters",
2301
- "summary": "Format of the code coverage results.",
2360
+ "include-packages": {
2361
+ "aliases": [
2362
+ "includepackages"
2363
+ ],
2364
+ "char": "c",
2365
+ "dependsOn": [
2366
+ "from-org"
2367
+ ],
2368
+ "deprecateAliases": true,
2369
+ "name": "include-packages",
2370
+ "summary": "Package types (managed, unlocked) whose metadata is included in the manifest; by default, metadata in managed and unlocked packages is excluded. Metadata in unmanaged packages is always included.",
2371
+ "delimiter": ",",
2302
2372
  "hasDynamicHelp": false,
2303
2373
  "multiple": true,
2304
2374
  "options": [
2305
- "clover",
2306
- "cobertura",
2307
- "html-spa",
2308
- "html",
2309
- "json",
2310
- "json-summary",
2311
- "lcovonly",
2312
- "none",
2313
- "teamcity",
2314
- "text",
2315
- "text-summary"
2375
+ "managed",
2376
+ "unlocked"
2316
2377
  ],
2317
2378
  "type": "option"
2318
2379
  },
2319
- "junit": {
2320
- "helpGroup": "Test",
2321
- "name": "junit",
2322
- "summary": "Output JUnit test results.",
2323
- "allowNo": false,
2324
- "type": "boolean"
2325
- },
2326
- "results-dir": {
2327
- "helpGroup": "Test",
2328
- "name": "results-dir",
2380
+ "excluded-metadata": {
2381
+ "name": "excluded-metadata",
2329
2382
  "relationships": [
2330
2383
  {
2331
2384
  "type": "some",
2332
2385
  "flags": [
2333
- "coverage-formatters",
2334
- "junit"
2386
+ "from-org",
2387
+ "source-dir"
2335
2388
  ]
2336
2389
  }
2337
2390
  ],
2338
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
2391
+ "summary": "Metadata types to exclude when building a manifest from an org. Specify the name of the type, not the name of a specific component.",
2392
+ "delimiter": ",",
2339
2393
  "hasDynamicHelp": false,
2340
- "multiple": false,
2394
+ "multiple": true,
2341
2395
  "type": "option"
2342
2396
  },
2343
- "purge-on-delete": {
2344
- "dependsOn": [
2345
- "manifest"
2346
- ],
2347
- "helpGroup": "Delete",
2348
- "name": "purge-on-delete",
2349
- "relationships": [
2350
- {
2351
- "type": "some",
2352
- "flags": [
2353
- "pre-destructive-changes",
2354
- "post-destructive-changes"
2355
- ]
2356
- }
2397
+ "from-org": {
2398
+ "aliases": [
2399
+ "fromorg"
2357
2400
  ],
2358
- "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
2359
- "allowNo": false,
2360
- "type": "boolean"
2361
- },
2362
- "pre-destructive-changes": {
2363
- "dependsOn": [
2364
- "manifest"
2401
+ "deprecateAliases": true,
2402
+ "exclusive": [
2403
+ "source-dir"
2365
2404
  ],
2366
- "helpGroup": "Delete",
2367
- "name": "pre-destructive-changes",
2368
- "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy",
2405
+ "name": "from-org",
2406
+ "summary": "Username or alias of the org that contains the metadata components from which to build a manifest.",
2369
2407
  "hasDynamicHelp": false,
2370
2408
  "multiple": false,
2371
2409
  "type": "option"
2372
2410
  },
2373
- "post-destructive-changes": {
2374
- "dependsOn": [
2375
- "manifest"
2411
+ "output-dir": {
2412
+ "aliases": [
2413
+ "outputdir",
2414
+ "o"
2376
2415
  ],
2377
- "helpGroup": "Delete",
2378
- "name": "post-destructive-changes",
2379
- "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
2416
+ "char": "d",
2417
+ "deprecateAliases": true,
2418
+ "name": "output-dir",
2419
+ "summary": "Directory to save the created manifest.",
2380
2420
  "hasDynamicHelp": false,
2381
2421
  "multiple": false,
2382
2422
  "type": "option"
2383
2423
  }
2384
2424
  },
2385
- "hasDynamicHelp": true,
2425
+ "hasDynamicHelp": false,
2386
2426
  "hiddenAliases": [],
2387
- "id": "project:deploy:validate",
2427
+ "id": "project:generate:manifest",
2388
2428
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2389
2429
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2390
2430
  "pluginType": "core",
2391
2431
  "strict": true,
2392
- "summary": "Validate a metadata deployment without actually executing it.",
2432
+ "summary": "Create a project manifest that lists the metadata components you want to deploy or retrieve.",
2393
2433
  "enableJsonFlag": true,
2394
- "configurationVariablesSection": {
2395
- "header": "CONFIGURATION VARIABLES",
2396
- "body": [
2397
- {
2398
- "name": "target-org",
2399
- "description": "Username or alias of the org that all commands run against by default. (sf only)"
2400
- },
2401
- {
2402
- "name": "org-api-version",
2403
- "description": "API version of your project. Default: API version of your Dev Hub org."
2404
- }
2405
- ]
2406
- },
2407
- "envVariablesSection": {
2408
- "header": "ENVIRONMENT VARIABLES",
2409
- "body": [
2410
- {
2411
- "name": "SF_TARGET_ORG",
2412
- "description": "Username or alias of your default org. Overrides the target-org configuration variable."
2413
- },
2414
- {
2415
- "name": "SF_USE_PROGRESS_BAR",
2416
- "description": "Set to false to disable the progress bar when running the metadata deploy command."
2417
- }
2418
- ]
2419
- },
2420
- "errorCodes": {
2421
- "header": "ERROR CODES",
2422
- "body": [
2423
- {
2424
- "name": "Succeeded (0)",
2425
- "description": "The deploy succeeded."
2426
- },
2427
- {
2428
- "name": "Canceled (1)",
2429
- "description": "The deploy was canceled."
2430
- },
2431
- {
2432
- "name": "Failed (1)",
2433
- "description": "The deploy failed."
2434
- },
2435
- {
2436
- "name": "SucceededPartial (68)",
2437
- "description": "The deploy partially succeeded."
2438
- },
2439
- {
2440
- "name": "InProgress (69)",
2441
- "description": "The deploy is in progress."
2442
- },
2443
- {
2444
- "name": "Pending (69)",
2445
- "description": "The deploy is pending."
2446
- },
2447
- {
2448
- "name": "Canceling (69)",
2449
- "description": "The deploy is being canceled."
2450
- }
2451
- ]
2452
- },
2434
+ "requiresProject": true,
2453
2435
  "isESM": true,
2454
2436
  "relativePath": [
2455
2437
  "lib",
2456
2438
  "commands",
2457
2439
  "project",
2458
- "deploy",
2459
- "validate.js"
2440
+ "generate",
2441
+ "manifest.js"
2460
2442
  ],
2461
2443
  "aliasPermutations": [
2462
- "deploy:metadata:validate",
2463
- "metadata:deploy:validate",
2464
- "metadata:validate:deploy",
2465
- "deploy:validate:metadata",
2466
- "validate:deploy:metadata",
2467
- "validate:metadata:deploy"
2444
+ "force:source:manifest:create",
2445
+ "source:force:manifest:create",
2446
+ "source:manifest:force:create",
2447
+ "source:manifest:create:force",
2448
+ "force:manifest:source:create",
2449
+ "manifest:force:source:create",
2450
+ "manifest:source:force:create",
2451
+ "manifest:source:create:force",
2452
+ "force:manifest:create:source",
2453
+ "manifest:force:create:source",
2454
+ "manifest:create:force:source",
2455
+ "manifest:create:source:force",
2456
+ "force:source:create:manifest",
2457
+ "source:force:create:manifest",
2458
+ "source:create:force:manifest",
2459
+ "source:create:manifest:force",
2460
+ "force:create:source:manifest",
2461
+ "create:force:source:manifest",
2462
+ "create:source:force:manifest",
2463
+ "create:source:manifest:force",
2464
+ "force:create:manifest:source",
2465
+ "create:force:manifest:source",
2466
+ "create:manifest:force:source",
2467
+ "create:manifest:source:force"
2468
2468
  ],
2469
2469
  "permutations": [
2470
- "project:deploy:validate",
2471
- "deploy:project:validate",
2472
- "deploy:validate:project",
2473
- "project:validate:deploy",
2474
- "validate:project:deploy",
2475
- "validate:deploy:project"
2470
+ "project:generate:manifest",
2471
+ "generate:project:manifest",
2472
+ "generate:manifest:project",
2473
+ "project:manifest:generate",
2474
+ "manifest:project:generate",
2475
+ "manifest:generate:project"
2476
2476
  ]
2477
2477
  },
2478
2478
  "project:list:ignored": {
@@ -3051,5 +3051,5 @@
3051
3051
  ]
3052
3052
  }
3053
3053
  },
3054
- "version": "3.22.15"
3054
+ "version": "3.22.16"
3055
3055
  }