@salesforce/plugin-deploy-retrieve 3.20.10 → 3.20.11

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