@salesforce/plugin-deploy-retrieve 3.17.2 → 3.17.7

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