@salesforce/plugin-deploy-retrieve 3.19.2 → 3.20.0

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