@salesforce/plugin-deploy-retrieve 3.22.11 → 3.22.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +17 -17
  2. package/oclif.manifest.json +1418 -1418
  3. package/package.json +8 -8
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "commands": {
3
- "project:deploy:cancel": {
3
+ "project:convert:mdapi": {
4
4
  "aliases": [
5
- "deploy:metadata:cancel"
5
+ "force:mdapi:convert"
6
6
  ],
7
7
  "args": {},
8
8
  "deprecateAliases": true,
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.",
9
+ "description": "To use Salesforce CLI to work with components that you retrieved via Metadata API, first convert your files from the metadata format to the source format using this command.\n\nTo convert files from the source format back to the metadata format, run \"sf project convert source\".\n\nTo convert multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
10
10
  "examples": [
11
- "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"
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"
13
13
  ],
14
14
  "flags": {
15
15
  "json": {
@@ -27,103 +27,136 @@
27
27
  "multiple": false,
28
28
  "type": "option"
29
29
  },
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,
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,
36
38
  "multiple": false,
37
39
  "type": "option"
38
40
  },
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"
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"
43
54
  ],
44
- "name": "async",
45
- "summary": "Run the command asynchronously.",
46
- "allowNo": false,
47
- "type": "boolean"
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,
61
+ "multiple": false,
62
+ "type": "option"
48
63
  },
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.",
64
+ "output-dir": {
65
+ "aliases": [
66
+ "outputdir"
67
+ ],
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.",
54
72
  "hasDynamicHelp": false,
55
73
  "multiple": false,
56
74
  "type": "option"
57
75
  },
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"
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.",
81
+ "hasDynamicHelp": false,
82
+ "multiple": false,
83
+ "type": "option"
65
84
  },
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\".",
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.",
69
92
  "exclusive": [
70
- "async"
93
+ "manifest",
94
+ "metadata"
71
95
  ],
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,
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"
102
+ },
103
+ "metadata": {
104
+ "char": "m",
105
+ "exclusive": [
106
+ "manifest",
107
+ "metadatapath"
108
+ ],
109
+ "name": "metadata",
110
+ "summary": "Metadata component names to convert.",
111
+ "delimiter": ",",
112
+ "hasDynamicHelp": false,
113
+ "multiple": true,
77
114
  "type": "option"
78
115
  }
79
116
  },
80
- "hasDynamicHelp": true,
117
+ "hasDynamicHelp": false,
81
118
  "hiddenAliases": [],
82
- "id": "project:deploy:cancel",
119
+ "id": "project:convert:mdapi",
83
120
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
84
121
  "pluginName": "@salesforce/plugin-deploy-retrieve",
85
122
  "pluginType": "core",
86
123
  "strict": true,
87
- "summary": "Cancel a deploy operation.",
124
+ "summary": "Convert metadata retrieved via Metadata API into the source format used in Salesforce DX projects.",
88
125
  "enableJsonFlag": true,
126
+ "requiresProject": true,
89
127
  "isESM": true,
90
128
  "relativePath": [
91
129
  "lib",
92
130
  "commands",
93
131
  "project",
94
- "deploy",
95
- "cancel.js"
132
+ "convert",
133
+ "mdapi.js"
96
134
  ],
97
135
  "aliasPermutations": [
98
- "deploy:metadata:cancel",
99
- "metadata:deploy:cancel",
100
- "metadata:cancel:deploy",
101
- "deploy:cancel:metadata",
102
- "cancel:deploy:metadata",
103
- "cancel:metadata:deploy"
136
+ "force:mdapi:convert",
137
+ "mdapi:force:convert",
138
+ "mdapi:convert:force",
139
+ "force:convert:mdapi",
140
+ "convert:force:mdapi",
141
+ "convert:mdapi:force"
104
142
  ],
105
143
  "permutations": [
106
- "project:deploy:cancel",
107
- "deploy:project:cancel",
108
- "deploy:cancel:project",
109
- "project:cancel:deploy",
110
- "cancel:project:deploy",
111
- "cancel:deploy:project"
144
+ "project:convert:mdapi",
145
+ "convert:project:mdapi",
146
+ "convert:mdapi:project",
147
+ "project:mdapi:convert",
148
+ "mdapi:project:convert",
149
+ "mdapi:convert:project"
112
150
  ]
113
151
  },
114
- "project:deploy:preview": {
115
- "aliases": [
116
- "deploy:metadata:preview"
117
- ],
152
+ "project:convert:source-behavior": {
153
+ "aliases": [],
118
154
  "args": {},
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.",
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.",
121
156
  "examples": [
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"
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"
127
160
  ],
128
161
  "flags": {
129
162
  "json": {
@@ -141,77 +174,55 @@
141
174
  "multiple": false,
142
175
  "type": "option"
143
176
  },
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.",
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.",
161
182
  "hasDynamicHelp": false,
162
183
  "multiple": false,
163
- "type": "option"
164
- },
165
- "metadata": {
166
- "char": "m",
167
- "exclusive": [
168
- "manifest",
169
- "source-dir"
184
+ "options": [
185
+ "decomposeCustomLabelsBeta2",
186
+ "decomposeCustomLabelsBeta",
187
+ "decomposePermissionSetBeta",
188
+ "decomposePermissionSetBeta2",
189
+ "decomposeSharingRulesBeta",
190
+ "decomposeWorkflowBeta",
191
+ "decomposeExternalServiceRegistrationBeta"
170
192
  ],
171
- "name": "metadata",
172
- "summary": "Metadata component names to preview.",
173
- "hasDynamicHelp": false,
174
- "multiple": true,
175
193
  "type": "option"
176
194
  },
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, dont 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"
195
+ "dry-run": {
196
+ "name": "dry-run",
197
+ "summary": "Display what the command would do, but don't make any actual changes.",
198
+ "allowNo": false,
199
+ "type": "boolean"
200
+ },
201
+ "preserve-temp-dir": {
202
+ "name": "preserve-temp-dir",
203
+ "summary": "Don't delete the metadata API format temporary directory that this command creates. Useful for debugging.",
204
+ "allowNo": false,
205
+ "type": "boolean"
189
206
  },
190
207
  "target-org": {
191
208
  "char": "o",
192
209
  "name": "target-org",
193
210
  "noCacheDefault": true,
194
- "required": true,
195
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
211
+ "summary": "Username or alias of the target org.",
196
212
  "hasDynamicHelp": true,
197
213
  "multiple": false,
198
214
  "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"
205
215
  }
206
216
  },
207
217
  "hasDynamicHelp": true,
208
218
  "hiddenAliases": [],
209
- "id": "project:deploy:preview",
219
+ "id": "project:convert:source-behavior",
210
220
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
211
221
  "pluginName": "@salesforce/plugin-deploy-retrieve",
212
222
  "pluginType": "core",
223
+ "state": "beta",
213
224
  "strict": true,
214
- "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
225
+ "summary": "Enable a behavior of your project source files, and then update your Salesforce DX project to implement the behavior.",
215
226
  "enableJsonFlag": true,
216
227
  "requiresProject": true,
217
228
  "isESM": true,
@@ -219,36 +230,29 @@
219
230
  "lib",
220
231
  "commands",
221
232
  "project",
222
- "deploy",
223
- "preview.js"
224
- ],
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"
233
+ "convert",
234
+ "source-behavior.js"
232
235
  ],
236
+ "aliasPermutations": [],
233
237
  "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"
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"
240
244
  ]
241
245
  },
242
- "project:deploy:quick": {
246
+ "project:convert:source": {
243
247
  "aliases": [
244
- "deploy:metadata:quick"
248
+ "force:source:convert"
245
249
  ],
246
250
  "args": {},
247
251
  "deprecateAliases": true,
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.",
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.",
249
253
  "examples": [
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"
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'"
252
256
  ],
253
257
  "flags": {
254
258
  "json": {
@@ -266,162 +270,153 @@
266
270
  "multiple": false,
267
271
  "type": "option"
268
272
  },
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"
273
- ],
274
- "name": "async",
275
- "summary": "Run the command asynchronously.",
276
- "allowNo": false,
277
- "type": "boolean"
278
- },
279
- "concise": {
280
- "exclusive": [
281
- "verbose"
273
+ "api-version": {
274
+ "aliases": [
275
+ "apiversion"
282
276
  ],
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.",
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",
293
281
  "hasDynamicHelp": false,
294
282
  "multiple": false,
295
283
  "type": "option"
296
284
  },
297
- "target-org": {
298
- "char": "o",
299
- "name": "target-org",
300
- "noCacheDefault": true,
301
- "summary": "Username or alias of the target org.",
302
- "hasDynamicHelp": true,
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,
303
292
  "multiple": false,
304
293
  "type": "option"
305
294
  },
306
- "use-most-recent": {
295
+ "root-dir": {
296
+ "aliases": [
297
+ "rootdir"
298
+ ],
307
299
  "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"
300
+ "deprecateAliases": true,
301
+ "name": "root-dir",
302
+ "summary": "Source directory other than the default package to convert.",
303
+ "hasDynamicHelp": false,
304
+ "multiple": false,
305
+ "type": "option"
313
306
  },
314
- "verbose": {
315
- "exclusive": [
316
- "concise"
307
+ "output-dir": {
308
+ "aliases": [
309
+ "outputdir"
317
310
  ],
318
- "name": "verbose",
319
- "summary": "Show verbose output of the deploy result.",
320
- "allowNo": false,
321
- "type": "boolean"
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<",
316
+ "hasDynamicHelp": true,
317
+ "multiple": false,
318
+ "type": "option"
322
319
  },
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\".",
326
- "exclusive": [
327
- "async"
320
+ "package-name": {
321
+ "aliases": [
322
+ "packagename"
328
323
  ],
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>",
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,
334
329
  "multiple": false,
335
330
  "type": "option"
336
331
  },
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.",
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.",
342
337
  "hasDynamicHelp": false,
343
338
  "multiple": false,
344
339
  "type": "option"
340
+ },
341
+ "source-dir": {
342
+ "aliases": [
343
+ "sourcepath"
344
+ ],
345
+ "char": "p",
346
+ "deprecateAliases": true,
347
+ "description": "The supplied paths can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --manifest or --metadata.",
348
+ "exclusive": [
349
+ "manifest",
350
+ "metadata"
351
+ ],
352
+ "name": "source-dir",
353
+ "summary": "Paths to the local source files to convert.",
354
+ "delimiter": ",",
355
+ "hasDynamicHelp": false,
356
+ "multiple": true,
357
+ "type": "option"
358
+ },
359
+ "metadata": {
360
+ "char": "m",
361
+ "exclusive": [
362
+ "manifest",
363
+ "sourcepath"
364
+ ],
365
+ "name": "metadata",
366
+ "summary": "Metadata component names to convert.",
367
+ "delimiter": ",",
368
+ "hasDynamicHelp": false,
369
+ "multiple": true,
370
+ "type": "option"
345
371
  }
346
372
  },
347
373
  "hasDynamicHelp": true,
348
374
  "hiddenAliases": [],
349
- "id": "project:deploy:quick",
375
+ "id": "project:convert:source",
350
376
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
351
377
  "pluginName": "@salesforce/plugin-deploy-retrieve",
352
378
  "pluginType": "core",
353
379
  "strict": true,
354
- "summary": "Quickly deploy a validated deployment to an org.",
380
+ "summary": "Convert source-formatted files into metadata that you can deploy using Metadata API.",
355
381
  "enableJsonFlag": 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
- },
382
+ "requiresProject": true,
389
383
  "isESM": true,
390
384
  "relativePath": [
391
385
  "lib",
392
386
  "commands",
393
387
  "project",
394
- "deploy",
395
- "quick.js"
388
+ "convert",
389
+ "source.js"
396
390
  ],
397
391
  "aliasPermutations": [
398
- "deploy:metadata:quick",
399
- "metadata:deploy:quick",
400
- "metadata:quick:deploy",
401
- "deploy:quick:metadata",
402
- "quick:deploy:metadata",
403
- "quick:metadata:deploy"
392
+ "force:source:convert",
393
+ "source:force:convert",
394
+ "source:convert:force",
395
+ "force:convert:source",
396
+ "convert:force:source",
397
+ "convert:source:force"
404
398
  ],
405
399
  "permutations": [
406
- "project:deploy:quick",
407
- "deploy:project:quick",
408
- "deploy:quick:project",
409
- "project:quick:deploy",
410
- "quick:project:deploy",
411
- "quick:deploy:project"
400
+ "project:convert:source",
401
+ "convert:project:source",
402
+ "convert:source:project",
403
+ "project:source:convert",
404
+ "source:project:convert",
405
+ "source:convert:project"
412
406
  ]
413
407
  },
414
- "project:deploy:report": {
408
+ "project:delete:source": {
415
409
  "aliases": [
416
- "deploy:metadata:report"
410
+ "force:source:delete"
417
411
  ],
418
412
  "args": {},
419
413
  "deprecateAliases": true,
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.",
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.",
421
415
  "examples": [
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"
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"
425
420
  ],
426
421
  "flags": {
427
422
  "json": {
@@ -439,133 +434,206 @@
439
434
  "multiple": false,
440
435
  "type": "option"
441
436
  },
442
- "target-org": {
443
- "char": "o",
444
- "name": "target-org",
445
- "noCacheDefault": true,
446
- "summary": "Username or alias of the target org.",
447
- "hasDynamicHelp": true,
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,
448
445
  "multiple": false,
449
446
  "type": "option"
450
447
  },
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.",
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",
456
454
  "hasDynamicHelp": false,
457
455
  "multiple": false,
458
456
  "type": "option"
459
457
  },
460
- "use-most-recent": {
461
- "char": "r",
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.",
458
+ "target-org": {
459
+ "aliases": [
460
+ "targetusername",
461
+ "u"
462
+ ],
463
+ "char": "o",
464
+ "deprecateAliases": true,
465
+ "name": "target-org",
466
+ "noCacheDefault": true,
467
+ "required": true,
468
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
469
+ "hasDynamicHelp": true,
470
+ "multiple": false,
471
+ "type": "option"
472
+ },
473
+ "check-only": {
474
+ "aliases": [
475
+ "checkonly"
476
+ ],
477
+ "char": "c",
478
+ "deprecateAliases": true,
479
+ "description": "IMPORTANT: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.\n\nValidates the deleted metadata and runs all Apex tests, but prevents the deletion from being saved to the org.\n\nIf you change a field type from Master-Detail to Lookup or vice versa, that change isn’t supported when using the --check-only flag to test a deletion (validation). This kind of change isn’t supported for test deletions to avoid the risk of data loss or corruption. If a change that isn’t supported for test deletions is included in a deletion package, the test deletion fails and issues an error.\n\nIf your deletion package changes a field type from Master-Detail to Lookup or vice versa, you can still validate the changes prior to deploying to Production by performing a full deletion to another test Sandbox. A full deletion includes a validation of the changes as part of the deletion process.\n\nNote: A Metadata API deletion that includes Master-Detail relationships deletes all detail records in the Recycle Bin in the following cases.\n\n 1. For a deletion with a new Master-Detail field, soft delete (send to the Recycle Bin) all detail records before proceeding to delete the Master-Detail field, or the deletion fails. During the deletion, detail records are permanently deleted from the Recycle Bin and cannot be recovered.\n\n 2. For a deletion that converts a Lookup field relationship to a Master-Detail relationship, detail records must reference a master record or be soft-deleted (sent to the Recycle Bin) for the deletion to succeed. However, a successful deletion permanently deletes any detail records in the Recycle Bin.",
480
+ "name": "check-only",
481
+ "summary": "Validate delete command but don't delete anything from the org or the local project.",
465
482
  "allowNo": false,
466
483
  "type": "boolean"
467
484
  },
468
- "coverage-formatters": {
469
- "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
485
+ "wait": {
486
+ "char": "w",
487
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
488
+ "name": "wait",
489
+ "summary": "Number of minutes to wait for the command to finish.",
490
+ "hasDynamicHelp": true,
491
+ "multiple": false,
492
+ "type": "option"
493
+ },
494
+ "tests": {
495
+ "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
470
496
  "helpGroup": "Test",
471
- "name": "coverage-formatters",
472
- "summary": "Format of the code coverage results.",
497
+ "name": "tests",
498
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
473
499
  "hasDynamicHelp": false,
474
500
  "multiple": true,
501
+ "type": "option"
502
+ },
503
+ "test-level": {
504
+ "aliases": [
505
+ "testlevel"
506
+ ],
507
+ "char": "l",
508
+ "deprecateAliases": true,
509
+ "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\nIf you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see “Running Tests in a Deployment” in the Metadata API Developer Guide.",
510
+ "helpGroup": "Test",
511
+ "name": "test-level",
512
+ "summary": "Deployment Apex testing level.",
513
+ "hasDynamicHelp": false,
514
+ "multiple": false,
475
515
  "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"
516
+ "NoTestRun",
517
+ "RunSpecifiedTests",
518
+ "RunLocalTests",
519
+ "RunAllTestsInOrg"
487
520
  ],
488
521
  "type": "option"
489
522
  },
490
- "junit": {
491
- "helpGroup": "Test",
492
- "name": "junit",
493
- "summary": "Output JUnit test results.",
523
+ "no-prompt": {
524
+ "aliases": [
525
+ "noprompt"
526
+ ],
527
+ "char": "r",
528
+ "deprecateAliases": true,
529
+ "name": "no-prompt",
530
+ "summary": "Don't prompt for delete confirmation.",
494
531
  "allowNo": false,
495
532
  "type": "boolean"
496
533
  },
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
- }
508
- ],
509
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
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": ",",
510
540
  "hasDynamicHelp": false,
511
- "multiple": false,
541
+ "multiple": true,
512
542
  "type": "option"
513
543
  },
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,
544
+ "source-dir": {
545
+ "aliases": [
546
+ "sourcepath"
547
+ ],
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,
522
556
  "type": "option"
557
+ },
558
+ "track-source": {
559
+ "aliases": [
560
+ "tracksource"
561
+ ],
562
+ "char": "t",
563
+ "deprecateAliases": true,
564
+ "exclusive": [
565
+ "check-only"
566
+ ],
567
+ "name": "track-source",
568
+ "summary": "If the delete succeeds, update the source tracking information.",
569
+ "allowNo": false,
570
+ "type": "boolean"
571
+ },
572
+ "force-overwrite": {
573
+ "aliases": [
574
+ "forceoverwrite"
575
+ ],
576
+ "char": "f",
577
+ "dependsOn": [
578
+ "track-source"
579
+ ],
580
+ "deprecateAliases": true,
581
+ "name": "force-overwrite",
582
+ "summary": "Ignore conflict warnings and overwrite changes to the org.",
583
+ "allowNo": false,
584
+ "type": "boolean"
585
+ },
586
+ "verbose": {
587
+ "name": "verbose",
588
+ "summary": "Verbose output of the delete result.",
589
+ "allowNo": false,
590
+ "type": "boolean"
523
591
  }
524
592
  },
525
593
  "hasDynamicHelp": true,
526
594
  "hiddenAliases": [],
527
- "id": "project:deploy:report",
595
+ "id": "project:delete:source",
528
596
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
529
597
  "pluginName": "@salesforce/plugin-deploy-retrieve",
530
598
  "pluginType": "core",
531
599
  "strict": true,
532
- "summary": "Check or poll for the status of a deploy operation.",
600
+ "summary": "Delete source from your project and from a non-source-tracked org.",
533
601
  "enableJsonFlag": true,
602
+ "requiresProject": true,
534
603
  "isESM": true,
535
604
  "relativePath": [
536
605
  "lib",
537
606
  "commands",
538
607
  "project",
539
- "deploy",
540
- "report.js"
608
+ "delete",
609
+ "source.js"
541
610
  ],
542
611
  "aliasPermutations": [
543
- "deploy:metadata:report",
544
- "metadata:deploy:report",
545
- "metadata:report:deploy",
546
- "deploy:report:metadata",
547
- "report:deploy:metadata",
548
- "report:metadata:deploy"
612
+ "force:source:delete",
613
+ "source:force:delete",
614
+ "source:delete:force",
615
+ "force:delete:source",
616
+ "delete:force:source",
617
+ "delete:source:force"
549
618
  ],
550
619
  "permutations": [
551
- "project:deploy:report",
552
- "deploy:project:report",
553
- "deploy:report:project",
554
- "project:report:deploy",
555
- "report:project:deploy",
556
- "report:deploy:project"
620
+ "project:delete:source",
621
+ "delete:project:source",
622
+ "delete:source:project",
623
+ "project:source:delete",
624
+ "source:project:delete",
625
+ "source:delete:project"
557
626
  ]
558
627
  },
559
- "project:deploy:resume": {
628
+ "project:delete:tracking": {
560
629
  "aliases": [
561
- "deploy:metadata:resume"
630
+ "force:source:tracking:clear"
562
631
  ],
563
632
  "args": {},
564
633
  "deprecateAliases": true,
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.",
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.",
566
635
  "examples": [
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"
636
+ "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
569
637
  ],
570
638
  "flags": {
571
639
  "json": {
@@ -583,196 +651,117 @@
583
651
  "multiple": false,
584
652
  "type": "option"
585
653
  },
586
- "concise": {
587
- "exclusive": [
588
- "verbose"
654
+ "api-version": {
655
+ "aliases": [
656
+ "apiversion"
589
657
  ],
590
- "name": "concise",
591
- "summary": "Show concise output of the deploy operation result.",
592
- "allowNo": false,
593
- "type": "boolean"
594
- },
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.",
658
+ "deprecateAliases": true,
659
+ "description": "Override the api version used for api requests made by this command",
660
+ "name": "api-version",
600
661
  "hasDynamicHelp": false,
601
662
  "multiple": false,
602
663
  "type": "option"
603
664
  },
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"
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",
671
+ "hasDynamicHelp": false,
672
+ "multiple": false,
673
+ "type": "option"
611
674
  },
612
- "verbose": {
613
- "exclusive": [
614
- "concise"
675
+ "target-org": {
676
+ "aliases": [
677
+ "targetusername",
678
+ "u"
615
679
  ],
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.",
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.",
626
686
  "hasDynamicHelp": true,
627
- "helpValue": "<minutes>",
628
687
  "multiple": false,
629
688
  "type": "option"
630
689
  },
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"
690
+ "no-prompt": {
691
+ "aliases": [
692
+ "noprompt"
650
693
  ],
651
- "type": "option"
652
- },
653
- "junit": {
654
- "helpGroup": "Test",
655
- "name": "junit",
656
- "summary": "Output JUnit test results.",
694
+ "char": "p",
695
+ "deprecateAliases": true,
696
+ "name": "no-prompt",
697
+ "summary": "Don't prompt for source tracking override confirmation.",
657
698
  "allowNo": false,
658
699
  "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"
676
700
  }
677
701
  },
678
702
  "hasDynamicHelp": true,
679
703
  "hiddenAliases": [],
680
- "id": "project:deploy:resume",
704
+ "id": "project:delete:tracking",
681
705
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
682
706
  "pluginName": "@salesforce/plugin-deploy-retrieve",
683
707
  "pluginType": "core",
684
708
  "strict": true,
685
- "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
709
+ "summary": "Delete all local source tracking information.",
686
710
  "enableJsonFlag": 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
- },
711
+ "requiresProject": true,
729
712
  "isESM": true,
730
713
  "relativePath": [
731
714
  "lib",
732
715
  "commands",
733
716
  "project",
734
- "deploy",
735
- "resume.js"
717
+ "delete",
718
+ "tracking.js"
736
719
  ],
737
720
  "aliasPermutations": [
738
- "deploy:metadata:resume",
739
- "metadata:deploy:resume",
740
- "metadata:resume:deploy",
741
- "deploy:resume:metadata",
742
- "resume:deploy:metadata",
743
- "resume:metadata:deploy"
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"
744
745
  ],
745
746
  "permutations": [
746
- "project:deploy:resume",
747
- "deploy:project:resume",
748
- "deploy:resume:project",
749
- "project:resume:deploy",
750
- "resume:project:deploy",
751
- "resume:deploy:project"
747
+ "project:delete:tracking",
748
+ "delete:project:tracking",
749
+ "delete:tracking:project",
750
+ "project:tracking:delete",
751
+ "tracking:project:delete",
752
+ "tracking:delete:project"
752
753
  ]
753
754
  },
754
- "project:deploy:start": {
755
+ "project:deploy:cancel": {
755
756
  "aliases": [
756
- "deploy:metadata"
757
+ "deploy:metadata:cancel"
757
758
  ],
758
759
  "args": {},
759
760
  "deprecateAliases": true,
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.",
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.",
761
762
  "examples": [
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"
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"
776
765
  ],
777
766
  "flags": {
778
767
  "json": {
@@ -790,17 +779,17 @@
790
779
  "multiple": false,
791
780
  "type": "option"
792
781
  },
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,
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,
799
788
  "multiple": false,
800
789
  "type": "option"
801
790
  },
802
791
  "async": {
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\".",
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\".",
804
793
  "exclusive": [
805
794
  "wait"
806
795
  ],
@@ -809,108 +798,143 @@
809
798
  "allowNo": false,
810
799
  "type": "boolean"
811
800
  },
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"
820
- },
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"
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"
834
809
  },
835
- "ignore-errors": {
810
+ "use-most-recent": {
836
811
  "char": "r",
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.",
840
- "allowNo": false,
841
- "type": "boolean"
842
- },
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.",
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.",
848
815
  "allowNo": false,
849
816
  "type": "boolean"
850
817
  },
851
- "manifest": {
852
- "char": "x",
853
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
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\".",
854
821
  "exclusive": [
855
- "source-dir",
856
- "metadata",
857
- "metadata-dir"
822
+ "async"
858
823
  ],
859
- "helpGroup": "Source Format",
860
- "name": "manifest",
861
- "summary": "Full file path for manifest (package.xml) of components to deploy.",
862
- "hasDynamicHelp": false,
863
- "multiple": false,
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,
864
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"
865
887
  },
866
- "metadata": {
867
- "char": "m",
868
- "exclusive": [
869
- "manifest",
870
- "source-dir",
871
- "metadata-dir"
872
- ],
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*`.",
888
+ "flags-dir": {
889
+ "helpGroup": "GLOBAL",
890
+ "name": "flags-dir",
891
+ "summary": "Import flag values from a directory.",
876
892
  "hasDynamicHelp": false,
877
- "multiple": true,
893
+ "multiple": false,
878
894
  "type": "option"
879
895
  },
880
- "metadata-dir": {
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.",
881
907
  "exclusive": [
882
- "manifest",
883
908
  "source-dir",
884
909
  "metadata"
885
910
  ],
886
- "helpGroup": "Metadata API Format",
887
- "name": "metadata-dir",
888
- "summary": "Root of directory or zip file of metadata formatted files to deploy.",
911
+ "name": "manifest",
912
+ "summary": "Full file path for manifest (package.xml) of components to preview.",
889
913
  "hasDynamicHelp": false,
890
914
  "multiple": false,
891
915
  "type": "option"
892
916
  },
893
- "single-package": {
894
- "dependsOn": [
895
- "metadata-dir"
917
+ "metadata": {
918
+ "char": "m",
919
+ "exclusive": [
920
+ "manifest",
921
+ "source-dir"
896
922
  ],
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"
923
+ "name": "metadata",
924
+ "summary": "Metadata component names to preview.",
925
+ "hasDynamicHelp": false,
926
+ "multiple": true,
927
+ "type": "option"
902
928
  },
903
929
  "source-dir": {
904
930
  "char": "d",
905
931
  "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
906
932
  "exclusive": [
907
933
  "manifest",
908
- "metadata",
909
- "metadata-dir"
934
+ "metadata"
910
935
  ],
911
- "helpGroup": "Source Format",
912
936
  "name": "source-dir",
913
- "summary": "Path to the local source files to deploy.",
937
+ "summary": "Path to the local source files to preview.",
914
938
  "hasDynamicHelp": false,
915
939
  "multiple": true,
916
940
  "type": "option"
@@ -925,32 +949,120 @@
925
949
  "multiple": false,
926
950
  "type": "option"
927
951
  },
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.",
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.",
934
1017
  "hasDynamicHelp": false,
935
- "multiple": true,
1018
+ "multiple": false,
936
1019
  "type": "option"
937
1020
  },
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.",
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.",
944
1045
  "hasDynamicHelp": false,
945
1046
  "multiple": false,
946
- "options": [
947
- "NoTestRun",
948
- "RunSpecifiedTests",
949
- "RunLocalTests",
950
- "RunAllTestsInOrg"
951
- ],
952
1047
  "type": "option"
953
1048
  },
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
+ },
954
1066
  "verbose": {
955
1067
  "exclusive": [
956
1068
  "concise"
@@ -962,57 +1074,149 @@
962
1074
  },
963
1075
  "wait": {
964
1076
  "char": "w",
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\".",
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\".",
966
1078
  "exclusive": [
967
1079
  "async"
968
1080
  ],
969
1081
  "name": "wait",
970
- "summary": "Number of minutes to wait for command to complete and display results.",
1082
+ "summary": "Number of minutes to wait for the command to complete and display results.",
1083
+ "default": "33 minutes",
971
1084
  "hasDynamicHelp": true,
972
1085
  "helpValue": "<minutes>",
973
1086
  "multiple": false,
974
1087
  "type": "option"
975
1088
  },
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.",
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",
991
1183
  "allowNo": false,
992
1184
  "type": "boolean"
993
1185
  },
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.",
1186
+ "flags-dir": {
1187
+ "helpGroup": "GLOBAL",
1188
+ "name": "flags-dir",
1189
+ "summary": "Import flag values from a directory.",
1001
1190
  "hasDynamicHelp": false,
1002
1191
  "multiple": false,
1003
1192
  "type": "option"
1004
1193
  },
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.",
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.",
1012
1208
  "hasDynamicHelp": false,
1013
1209
  "multiple": false,
1014
1210
  "type": "option"
1015
1211
  },
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
+ },
1016
1220
  "coverage-formatters": {
1017
1221
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1018
1222
  "helpGroup": "Test",
@@ -1058,110 +1262,62 @@
1058
1262
  "hasDynamicHelp": false,
1059
1263
  "multiple": false,
1060
1264
  "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"
1061
1275
  }
1062
1276
  },
1063
1277
  "hasDynamicHelp": true,
1064
1278
  "hiddenAliases": [],
1065
- "id": "project:deploy:start",
1279
+ "id": "project:deploy:report",
1066
1280
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1067
1281
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1068
1282
  "pluginType": "core",
1069
1283
  "strict": true,
1070
- "summary": "Deploy metadata to an org from your local project.",
1284
+ "summary": "Check or poll for the status of a deploy operation.",
1071
1285
  "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
- },
1131
1286
  "isESM": true,
1132
1287
  "relativePath": [
1133
1288
  "lib",
1134
1289
  "commands",
1135
1290
  "project",
1136
1291
  "deploy",
1137
- "start.js"
1292
+ "report.js"
1138
1293
  ],
1139
1294
  "aliasPermutations": [
1140
- "deploy:metadata",
1141
- "metadata:deploy"
1295
+ "deploy:metadata:report",
1296
+ "metadata:deploy:report",
1297
+ "metadata:report:deploy",
1298
+ "deploy:report:metadata",
1299
+ "report:deploy:metadata",
1300
+ "report:metadata:deploy"
1142
1301
  ],
1143
1302
  "permutations": [
1144
- "project:deploy:start",
1145
- "deploy:project:start",
1146
- "deploy:start:project",
1147
- "project:start:deploy",
1148
- "start:project:deploy",
1149
- "start:deploy:project"
1303
+ "project:deploy:report",
1304
+ "deploy:project:report",
1305
+ "deploy:report:project",
1306
+ "project:report:deploy",
1307
+ "report:project:deploy",
1308
+ "report:deploy:project"
1150
1309
  ]
1151
1310
  },
1152
- "project:deploy:validate": {
1311
+ "project:deploy:resume": {
1153
1312
  "aliases": [
1154
- "deploy:metadata:validate"
1313
+ "deploy:metadata:resume"
1155
1314
  ],
1156
1315
  "args": {},
1157
1316
  "deprecateAliases": true,
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.",
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.",
1159
1318
  "examples": [
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"
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"
1165
1321
  ],
1166
1322
  "flags": {
1167
1323
  "json": {
@@ -1179,126 +1335,44 @@
1179
1335
  "multiple": false,
1180
1336
  "type": "option"
1181
1337
  },
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"
1190
- },
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
1338
  "concise": {
1199
1339
  "exclusive": [
1200
1340
  "verbose"
1201
1341
  ],
1202
1342
  "name": "concise",
1203
- "summary": "Show concise output of the validation result.",
1343
+ "summary": "Show concise output of the deploy operation result.",
1204
1344
  "allowNo": false,
1205
1345
  "type": "boolean"
1206
1346
  },
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.",
1213
- "hasDynamicHelp": false,
1214
- "multiple": false,
1215
- "type": "option"
1216
- },
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.",
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.",
1240
1352
  "hasDynamicHelp": false,
1241
1353
  "multiple": false,
1242
1354
  "type": "option"
1243
1355
  },
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.",
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.",
1251
1361
  "allowNo": false,
1252
1362
  "type": "boolean"
1253
1363
  },
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
- },
1290
1364
  "verbose": {
1291
1365
  "exclusive": [
1292
1366
  "concise"
1293
1367
  ],
1294
1368
  "name": "verbose",
1295
- "summary": "Show verbose output of the validation result.",
1369
+ "summary": "Show verbose output of the deploy operation result.",
1296
1370
  "allowNo": false,
1297
1371
  "type": "boolean"
1298
1372
  },
1299
1373
  "wait": {
1300
1374
  "char": "w",
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\".",
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\".",
1302
1376
  "name": "wait",
1303
1377
  "summary": "Number of minutes to wait for the command to complete and display results.",
1304
1378
  "hasDynamicHelp": true,
@@ -1306,14 +1380,6 @@
1306
1380
  "multiple": false,
1307
1381
  "type": "option"
1308
1382
  },
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
- },
1317
1383
  "coverage-formatters": {
1318
1384
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1319
1385
  "helpGroup": "Test",
@@ -1359,78 +1425,20 @@
1359
1425
  "hasDynamicHelp": false,
1360
1426
  "multiple": false,
1361
1427
  "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"
1403
1428
  }
1404
1429
  },
1405
1430
  "hasDynamicHelp": true,
1406
1431
  "hiddenAliases": [],
1407
- "id": "project:deploy:validate",
1432
+ "id": "project:deploy:resume",
1408
1433
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1409
1434
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1410
1435
  "pluginType": "core",
1411
1436
  "strict": true,
1412
- "summary": "Validate a metadata deployment without actually executing it.",
1437
+ "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1413
1438
  "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
- },
1427
1439
  "envVariablesSection": {
1428
1440
  "header": "ENVIRONMENT VARIABLES",
1429
1441
  "body": [
1430
- {
1431
- "name": "SF_TARGET_ORG",
1432
- "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1433
- },
1434
1442
  {
1435
1443
  "name": "SF_USE_PROGRESS_BAR",
1436
1444
  "description": "Set to false to disable the progress bar when running the metadata deploy command."
@@ -1476,35 +1484,47 @@
1476
1484
  "commands",
1477
1485
  "project",
1478
1486
  "deploy",
1479
- "validate.js"
1487
+ "resume.js"
1480
1488
  ],
1481
1489
  "aliasPermutations": [
1482
- "deploy:metadata:validate",
1483
- "metadata:deploy:validate",
1484
- "metadata:validate:deploy",
1485
- "deploy:validate:metadata",
1486
- "validate:deploy:metadata",
1487
- "validate:metadata:deploy"
1490
+ "deploy:metadata:resume",
1491
+ "metadata:deploy:resume",
1492
+ "metadata:resume:deploy",
1493
+ "deploy:resume:metadata",
1494
+ "resume:deploy:metadata",
1495
+ "resume:metadata:deploy"
1488
1496
  ],
1489
1497
  "permutations": [
1490
- "project:deploy:validate",
1491
- "deploy:project:validate",
1492
- "deploy:validate:project",
1493
- "project:validate:deploy",
1494
- "validate:project:deploy",
1495
- "validate:deploy:project"
1498
+ "project:deploy:resume",
1499
+ "deploy:project:resume",
1500
+ "deploy:resume:project",
1501
+ "project:resume:deploy",
1502
+ "resume:project:deploy",
1503
+ "resume:deploy:project"
1496
1504
  ]
1497
1505
  },
1498
- "project:convert:mdapi": {
1506
+ "project:deploy:start": {
1499
1507
  "aliases": [
1500
- "force:mdapi:convert"
1508
+ "deploy:metadata"
1501
1509
  ],
1502
1510
  "args": {},
1503
1511
  "deprecateAliases": true,
1504
- "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.",
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.",
1505
1513
  "examples": [
1506
- "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",
1507
- "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"
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"
1508
1528
  ],
1509
1529
  "flags": {
1510
1530
  "json": {
@@ -1523,231 +1543,377 @@
1523
1543
  "type": "option"
1524
1544
  },
1525
1545
  "api-version": {
1526
- "aliases": [
1527
- "apiversion"
1528
- ],
1529
- "deprecateAliases": true,
1530
- "description": "Override the api version used for api requests made by this command",
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.",
1531
1548
  "name": "api-version",
1549
+ "summary": "Target API version for the deploy.",
1532
1550
  "hasDynamicHelp": false,
1533
1551
  "multiple": false,
1534
1552
  "type": "option"
1535
1553
  },
1536
- "loglevel": {
1537
- "deprecated": {
1538
- "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."
1539
- },
1540
- "hidden": true,
1541
- "name": "loglevel",
1542
- "hasDynamicHelp": false,
1543
- "multiple": false,
1544
- "type": "option"
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"
1545
1563
  },
1546
- "root-dir": {
1547
- "aliases": [
1548
- "rootdir"
1564
+ "concise": {
1565
+ "exclusive": [
1566
+ "verbose"
1549
1567
  ],
1550
- "char": "r",
1551
- "deprecateAliases": true,
1552
- "name": "root-dir",
1553
- "required": true,
1554
- "summary": "Root directory that contains the Metadata API–formatted metadata.",
1555
- "hasDynamicHelp": false,
1556
- "multiple": false,
1557
- "type": "option"
1568
+ "name": "concise",
1569
+ "summary": "Show concise output of the deploy result.",
1570
+ "allowNo": false,
1571
+ "type": "boolean"
1558
1572
  },
1559
- "output-dir": {
1560
- "aliases": [
1561
- "outputdir"
1562
- ],
1563
- "char": "d",
1564
- "deprecateAliases": true,
1565
- "name": "output-dir",
1566
- "summary": "Directory to store your files in after they’re converted to source format; can be an absolute or relative path.",
1567
- "hasDynamicHelp": false,
1568
- "multiple": false,
1569
- "type": "option"
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"
1570
1602
  },
1571
1603
  "manifest": {
1572
1604
  "char": "x",
1573
- "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
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",
1574
1612
  "name": "manifest",
1575
- "summary": "File path to manifest (package.xml) of metadata types to convert.",
1613
+ "summary": "Full file path for manifest (package.xml) of components to deploy.",
1576
1614
  "hasDynamicHelp": false,
1577
1615
  "multiple": false,
1578
1616
  "type": "option"
1579
1617
  },
1580
- "metadata-dir": {
1581
- "aliases": [
1582
- "metadatapath"
1583
- ],
1584
- "char": "p",
1585
- "deprecateAliases": true,
1586
- "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.",
1618
+ "metadata": {
1619
+ "char": "m",
1587
1620
  "exclusive": [
1588
1621
  "manifest",
1589
- "metadata"
1622
+ "source-dir",
1623
+ "metadata-dir"
1590
1624
  ],
1591
- "name": "metadata-dir",
1592
- "summary": "Root of directory or zip file of metadata formatted files to convert.",
1593
- "delimiter": ",",
1625
+ "helpGroup": "Source Format",
1626
+ "name": "metadata",
1627
+ "summary": "Metadata component names to deploy. Wildcards (`*` ) supported as long as you use quotes, such as `ApexClass:MyClass*`.",
1594
1628
  "hasDynamicHelp": false,
1595
1629
  "multiple": true,
1596
1630
  "type": "option"
1597
1631
  },
1598
- "metadata": {
1599
- "char": "m",
1632
+ "metadata-dir": {
1600
1633
  "exclusive": [
1601
1634
  "manifest",
1602
- "metadatapath"
1635
+ "source-dir",
1636
+ "metadata"
1603
1637
  ],
1604
- "name": "metadata",
1605
- "summary": "Metadata component names to convert.",
1606
- "delimiter": ",",
1638
+ "helpGroup": "Metadata API Format",
1639
+ "name": "metadata-dir",
1640
+ "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1607
1641
  "hasDynamicHelp": false,
1608
- "multiple": true,
1642
+ "multiple": false,
1609
1643
  "type": "option"
1610
- }
1611
- },
1612
- "hasDynamicHelp": false,
1613
- "hiddenAliases": [],
1614
- "id": "project:convert:mdapi",
1615
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1616
- "pluginName": "@salesforce/plugin-deploy-retrieve",
1617
- "pluginType": "core",
1618
- "strict": true,
1619
- "summary": "Convert metadata retrieved via Metadata API into the source format used in Salesforce DX projects.",
1620
- "enableJsonFlag": true,
1621
- "requiresProject": true,
1622
- "isESM": true,
1623
- "relativePath": [
1624
- "lib",
1625
- "commands",
1626
- "project",
1627
- "convert",
1628
- "mdapi.js"
1629
- ],
1630
- "aliasPermutations": [
1631
- "force:mdapi:convert",
1632
- "mdapi:force:convert",
1633
- "mdapi:convert:force",
1634
- "force:convert:mdapi",
1635
- "convert:force:mdapi",
1636
- "convert:mdapi:force"
1637
- ],
1638
- "permutations": [
1639
- "project:convert:mdapi",
1640
- "convert:project:mdapi",
1641
- "convert:mdapi:project",
1642
- "project:mdapi:convert",
1643
- "mdapi:project:convert",
1644
- "mdapi:convert:project"
1645
- ]
1646
- },
1647
- "project:convert:source-behavior": {
1648
- "aliases": [],
1649
- "args": {},
1650
- "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.",
1651
- "examples": [
1652
- "Update your Salesforce DX project to decompose custom permission sets:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta",
1653
- "Display what the command would do, but don't change any existing files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run",
1654
- "Keep the temporary directory that contains the interim metadata API formatted files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run --preserve-temp-dir"
1655
- ],
1656
- "flags": {
1657
- "json": {
1658
- "description": "Format output as json.",
1659
- "helpGroup": "GLOBAL",
1660
- "name": "json",
1644
+ },
1645
+ "single-package": {
1646
+ "dependsOn": [
1647
+ "metadata-dir"
1648
+ ],
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.",
1661
1652
  "allowNo": false,
1662
1653
  "type": "boolean"
1663
1654
  },
1664
- "flags-dir": {
1665
- "helpGroup": "GLOBAL",
1666
- "name": "flags-dir",
1667
- "summary": "Import flag values from a directory.",
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.",
1658
+ "exclusive": [
1659
+ "manifest",
1660
+ "metadata",
1661
+ "metadata-dir"
1662
+ ],
1663
+ "helpGroup": "Source Format",
1664
+ "name": "source-dir",
1665
+ "summary": "Path to the local source files to deploy.",
1668
1666
  "hasDynamicHelp": false,
1669
- "multiple": false,
1667
+ "multiple": true,
1670
1668
  "type": "option"
1671
1669
  },
1672
- "behavior": {
1673
- "char": "b",
1674
- "name": "behavior",
1670
+ "target-org": {
1671
+ "char": "o",
1672
+ "name": "target-org",
1673
+ "noCacheDefault": true,
1675
1674
  "required": true,
1676
- "summary": "Behavior to enable; the values correspond to the possible values of the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file.",
1675
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1676
+ "hasDynamicHelp": true,
1677
+ "multiple": false,
1678
+ "type": "option"
1679
+ },
1680
+ "tests": {
1681
+ "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.",
1677
1696
  "hasDynamicHelp": false,
1678
1697
  "multiple": false,
1679
1698
  "options": [
1680
- "decomposeCustomLabelsBeta2",
1681
- "decomposeCustomLabelsBeta",
1682
- "decomposePermissionSetBeta",
1683
- "decomposePermissionSetBeta2",
1684
- "decomposeSharingRulesBeta",
1685
- "decomposeWorkflowBeta",
1686
- "decomposeExternalServiceRegistrationBeta"
1699
+ "NoTestRun",
1700
+ "RunSpecifiedTests",
1701
+ "RunLocalTests",
1702
+ "RunAllTestsInOrg"
1687
1703
  ],
1688
1704
  "type": "option"
1689
1705
  },
1690
- "dry-run": {
1691
- "name": "dry-run",
1692
- "summary": "Display what the command would do, but don't make any actual changes.",
1693
- "allowNo": false,
1694
- "type": "boolean"
1695
- },
1696
- "preserve-temp-dir": {
1697
- "name": "preserve-temp-dir",
1698
- "summary": "Don't delete the metadata API format temporary directory that this command creates. Useful for debugging.",
1706
+ "verbose": {
1707
+ "exclusive": [
1708
+ "concise"
1709
+ ],
1710
+ "name": "verbose",
1711
+ "summary": "Show verbose output of the deploy result.",
1699
1712
  "allowNo": false,
1700
1713
  "type": "boolean"
1701
1714
  },
1702
- "target-org": {
1703
- "char": "o",
1704
- "name": "target-org",
1705
- "noCacheDefault": true,
1706
- "summary": "Username or alias of the target org.",
1715
+ "wait": {
1716
+ "char": "w",
1717
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1718
+ "exclusive": [
1719
+ "async"
1720
+ ],
1721
+ "name": "wait",
1722
+ "summary": "Number of minutes to wait for command to complete and display results.",
1707
1723
  "hasDynamicHelp": true,
1724
+ "helpValue": "<minutes>",
1708
1725
  "multiple": false,
1709
1726
  "type": "option"
1710
- }
1711
- },
1712
- "hasDynamicHelp": true,
1713
- "hiddenAliases": [],
1714
- "id": "project:convert:source-behavior",
1715
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1716
- "pluginName": "@salesforce/plugin-deploy-retrieve",
1717
- "pluginType": "core",
1718
- "state": "beta",
1719
- "strict": true,
1720
- "summary": "Enable a behavior of your project source files, and then update your Salesforce DX project to implement the behavior.",
1721
- "enableJsonFlag": true,
1722
- "requiresProject": true,
1723
- "isESM": true,
1724
- "relativePath": [
1725
- "lib",
1726
- "commands",
1727
- "project",
1728
- "convert",
1729
- "source-behavior.js"
1727
+ },
1728
+ "purge-on-delete": {
1729
+ "helpGroup": "Delete",
1730
+ "name": "purge-on-delete",
1731
+ "relationships": [
1732
+ {
1733
+ "type": "some",
1734
+ "flags": [
1735
+ "pre-destructive-changes",
1736
+ "manifest",
1737
+ "metadata-dir",
1738
+ "post-destructive-changes"
1739
+ ]
1740
+ }
1741
+ ],
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.",
1753
+ "hasDynamicHelp": false,
1754
+ "multiple": false,
1755
+ "type": "option"
1756
+ },
1757
+ "post-destructive-changes": {
1758
+ "dependsOn": [
1759
+ "manifest"
1760
+ ],
1761
+ "helpGroup": "Delete",
1762
+ "name": "post-destructive-changes",
1763
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1764
+ "hasDynamicHelp": false,
1765
+ "multiple": false,
1766
+ "type": "option"
1767
+ },
1768
+ "coverage-formatters": {
1769
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1770
+ "helpGroup": "Test",
1771
+ "name": "coverage-formatters",
1772
+ "summary": "Format of the code coverage results.",
1773
+ "hasDynamicHelp": false,
1774
+ "multiple": true,
1775
+ "options": [
1776
+ "clover",
1777
+ "cobertura",
1778
+ "html-spa",
1779
+ "html",
1780
+ "json",
1781
+ "json-summary",
1782
+ "lcovonly",
1783
+ "none",
1784
+ "teamcity",
1785
+ "text",
1786
+ "text-summary"
1787
+ ],
1788
+ "type": "option"
1789
+ },
1790
+ "junit": {
1791
+ "helpGroup": "Test",
1792
+ "name": "junit",
1793
+ "summary": "Output JUnit test results.",
1794
+ "allowNo": false,
1795
+ "type": "boolean"
1796
+ },
1797
+ "results-dir": {
1798
+ "helpGroup": "Test",
1799
+ "name": "results-dir",
1800
+ "relationships": [
1801
+ {
1802
+ "type": "some",
1803
+ "flags": [
1804
+ "coverage-formatters",
1805
+ "junit"
1806
+ ]
1807
+ }
1808
+ ],
1809
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1810
+ "hasDynamicHelp": false,
1811
+ "multiple": false,
1812
+ "type": "option"
1813
+ }
1814
+ },
1815
+ "hasDynamicHelp": true,
1816
+ "hiddenAliases": [],
1817
+ "id": "project:deploy:start",
1818
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1819
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
1820
+ "pluginType": "core",
1821
+ "strict": true,
1822
+ "summary": "Deploy metadata to an org from your local project.",
1823
+ "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
+ },
1883
+ "isESM": true,
1884
+ "relativePath": [
1885
+ "lib",
1886
+ "commands",
1887
+ "project",
1888
+ "deploy",
1889
+ "start.js"
1890
+ ],
1891
+ "aliasPermutations": [
1892
+ "deploy:metadata",
1893
+ "metadata:deploy"
1730
1894
  ],
1731
- "aliasPermutations": [],
1732
1895
  "permutations": [
1733
- "project:convert:source-behavior",
1734
- "convert:project:source-behavior",
1735
- "convert:source-behavior:project",
1736
- "project:source-behavior:convert",
1737
- "source-behavior:project:convert",
1738
- "source-behavior:convert:project"
1896
+ "project:deploy:start",
1897
+ "deploy:project:start",
1898
+ "deploy:start:project",
1899
+ "project:start:deploy",
1900
+ "start:project:deploy",
1901
+ "start:deploy:project"
1739
1902
  ]
1740
1903
  },
1741
- "project:convert:source": {
1904
+ "project:deploy:validate": {
1742
1905
  "aliases": [
1743
- "force:source:convert"
1906
+ "deploy:metadata:validate"
1744
1907
  ],
1745
1908
  "args": {},
1746
1909
  "deprecateAliases": true,
1747
- "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.",
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.",
1748
1911
  "examples": [
1749
- "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",
1750
- "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'"
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"
1751
1917
  ],
1752
1918
  "flags": {
1753
1919
  "json": {
@@ -1766,197 +1932,79 @@
1766
1932
  "type": "option"
1767
1933
  },
1768
1934
  "api-version": {
1769
- "aliases": [
1770
- "apiversion"
1771
- ],
1772
- "deprecateAliases": true,
1773
- "description": "Override the api version used for api requests made by this command",
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.",
1774
1937
  "name": "api-version",
1775
- "summary": "API Version to use in the generated project's manifest. By default, will use the version from sfdx-project.json",
1938
+ "summary": "Target API version for the validation.",
1776
1939
  "hasDynamicHelp": false,
1777
1940
  "multiple": false,
1778
1941
  "type": "option"
1779
1942
  },
1780
- "loglevel": {
1781
- "deprecated": {
1782
- "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."
1783
- },
1784
- "hidden": true,
1785
- "name": "loglevel",
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.",
1786
1965
  "hasDynamicHelp": false,
1787
1966
  "multiple": false,
1788
1967
  "type": "option"
1789
1968
  },
1790
- "root-dir": {
1791
- "aliases": [
1792
- "rootdir"
1793
- ],
1794
- "char": "r",
1795
- "deprecateAliases": true,
1796
- "name": "root-dir",
1797
- "summary": "Source directory other than the default package to convert.",
1969
+ "metadata": {
1970
+ "char": "m",
1971
+ "helpGroup": "Source Format",
1972
+ "name": "metadata",
1973
+ "summary": "Metadata component names to validate for deployment.",
1798
1974
  "hasDynamicHelp": false,
1799
- "multiple": false,
1975
+ "multiple": true,
1800
1976
  "type": "option"
1801
1977
  },
1802
- "output-dir": {
1803
- "aliases": [
1804
- "outputdir"
1805
- ],
1978
+ "source-dir": {
1806
1979
  "char": "d",
1807
- "deprecateAliases": true,
1808
- "name": "output-dir",
1809
- "summary": "Output directory to store the Metadata API–formatted files in.",
1810
- "default": "metadataPackage_>timestamp<",
1811
- "hasDynamicHelp": true,
1812
- "multiple": false,
1813
- "type": "option"
1814
- },
1815
- "package-name": {
1816
- "aliases": [
1817
- "packagename"
1818
- ],
1819
- "char": "n",
1820
- "deprecateAliases": true,
1821
- "name": "package-name",
1822
- "summary": "Name of the package to associate with the metadata-formatted files.",
1823
- "hasDynamicHelp": false,
1824
- "multiple": false,
1825
- "type": "option"
1826
- },
1827
- "manifest": {
1828
- "char": "x",
1829
- "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
1830
- "name": "manifest",
1831
- "summary": "Path to the manifest (package.xml) file that specifies the metadata types to convert.",
1832
- "hasDynamicHelp": false,
1833
- "multiple": false,
1834
- "type": "option"
1835
- },
1836
- "source-dir": {
1837
- "aliases": [
1838
- "sourcepath"
1839
- ],
1840
- "char": "p",
1841
- "deprecateAliases": true,
1842
- "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.",
1843
- "exclusive": [
1844
- "manifest",
1845
- "metadata"
1846
- ],
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",
1847
1982
  "name": "source-dir",
1848
- "summary": "Paths to the local source files to convert.",
1849
- "delimiter": ",",
1850
- "hasDynamicHelp": false,
1851
- "multiple": true,
1852
- "type": "option"
1853
- },
1854
- "metadata": {
1855
- "char": "m",
1856
- "exclusive": [
1857
- "manifest",
1858
- "sourcepath"
1859
- ],
1860
- "name": "metadata",
1861
- "summary": "Metadata component names to convert.",
1862
- "delimiter": ",",
1983
+ "summary": "Path to the local source files to validate for deployment.",
1863
1984
  "hasDynamicHelp": false,
1864
1985
  "multiple": true,
1865
1986
  "type": "option"
1866
- }
1867
- },
1868
- "hasDynamicHelp": true,
1869
- "hiddenAliases": [],
1870
- "id": "project:convert:source",
1871
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1872
- "pluginName": "@salesforce/plugin-deploy-retrieve",
1873
- "pluginType": "core",
1874
- "strict": true,
1875
- "summary": "Convert source-formatted files into metadata that you can deploy using Metadata API.",
1876
- "enableJsonFlag": true,
1877
- "requiresProject": true,
1878
- "isESM": true,
1879
- "relativePath": [
1880
- "lib",
1881
- "commands",
1882
- "project",
1883
- "convert",
1884
- "source.js"
1885
- ],
1886
- "aliasPermutations": [
1887
- "force:source:convert",
1888
- "source:force:convert",
1889
- "source:convert:force",
1890
- "force:convert:source",
1891
- "convert:force:source",
1892
- "convert:source:force"
1893
- ],
1894
- "permutations": [
1895
- "project:convert:source",
1896
- "convert:project:source",
1897
- "convert:source:project",
1898
- "project:source:convert",
1899
- "source:project:convert",
1900
- "source:convert:project"
1901
- ]
1902
- },
1903
- "project:delete:source": {
1904
- "aliases": [
1905
- "force:source:delete"
1906
- ],
1907
- "args": {},
1908
- "deprecateAliases": true,
1909
- "description": "Use this command to delete components from orgs that don’t have source tracking. To remove deleted items from orgs that have source tracking enabled, \"<%= config.bin %> project deploy start\".\n\nWhen you run this command, both the local source file and the metadata component in the org are deleted.\n\nTo delete multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
1910
- "examples": [
1911
- "Delete all local Apex source files and all Apex classes from the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
1912
- "Delete a specific Apex class and a Profile that has a space in it from your default org; don't prompt for confirmation:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyFabulousApexClass --metadata \"Profile: My Profile\" --no-prompt",
1913
- "Run the tests that aren’t in any managed packages as part of the deletion; if the delete succeeds, and the org has source-tracking enabled, update the source tracking information:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests --track-source",
1914
- "Delete the Apex source files in a directory and the corresponding components from your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes"
1915
- ],
1916
- "flags": {
1917
- "json": {
1918
- "description": "Format output as json.",
1919
- "helpGroup": "GLOBAL",
1920
- "name": "json",
1921
- "allowNo": false,
1922
- "type": "boolean"
1923
1987
  },
1924
- "flags-dir": {
1925
- "helpGroup": "GLOBAL",
1926
- "name": "flags-dir",
1927
- "summary": "Import flag values from a directory.",
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.",
1928
1992
  "hasDynamicHelp": false,
1929
1993
  "multiple": false,
1930
1994
  "type": "option"
1931
1995
  },
1932
- "api-version": {
1933
- "aliases": [
1934
- "apiversion"
1996
+ "single-package": {
1997
+ "dependsOn": [
1998
+ "metadata-dir"
1935
1999
  ],
1936
- "deprecateAliases": true,
1937
- "description": "Override the api version used for api requests made by this command",
1938
- "name": "api-version",
1939
- "hasDynamicHelp": false,
1940
- "multiple": false,
1941
- "type": "option"
1942
- },
1943
- "loglevel": {
1944
- "deprecated": {
1945
- "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
1946
- },
1947
- "hidden": true,
1948
- "name": "loglevel",
1949
- "hasDynamicHelp": false,
1950
- "multiple": false,
1951
- "type": "option"
2000
+ "helpGroup": "Metadata API Format",
2001
+ "name": "single-package",
2002
+ "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
2003
+ "allowNo": false,
2004
+ "type": "boolean"
1952
2005
  },
1953
2006
  "target-org": {
1954
- "aliases": [
1955
- "targetusername",
1956
- "u"
1957
- ],
1958
2007
  "char": "o",
1959
- "deprecateAliases": true,
1960
2008
  "name": "target-org",
1961
2009
  "noCacheDefault": true,
1962
2010
  "required": true,
@@ -1965,28 +2013,8 @@
1965
2013
  "multiple": false,
1966
2014
  "type": "option"
1967
2015
  },
1968
- "check-only": {
1969
- "aliases": [
1970
- "checkonly"
1971
- ],
1972
- "char": "c",
1973
- "deprecateAliases": true,
1974
- "description": "IMPORTANT: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.\n\nValidates the deleted metadata and runs all Apex tests, but prevents the deletion from being saved to the org.\n\nIf you change a field type from Master-Detail to Lookup or vice versa, that change isn’t supported when using the --check-only flag to test a deletion (validation). This kind of change isn’t supported for test deletions to avoid the risk of data loss or corruption. If a change that isn’t supported for test deletions is included in a deletion package, the test deletion fails and issues an error.\n\nIf your deletion package changes a field type from Master-Detail to Lookup or vice versa, you can still validate the changes prior to deploying to Production by performing a full deletion to another test Sandbox. A full deletion includes a validation of the changes as part of the deletion process.\n\nNote: A Metadata API deletion that includes Master-Detail relationships deletes all detail records in the Recycle Bin in the following cases.\n\n 1. For a deletion with a new Master-Detail field, soft delete (send to the Recycle Bin) all detail records before proceeding to delete the Master-Detail field, or the deletion fails. During the deletion, detail records are permanently deleted from the Recycle Bin and cannot be recovered.\n\n 2. For a deletion that converts a Lookup field relationship to a Master-Detail relationship, detail records must reference a master record or be soft-deleted (sent to the Recycle Bin) for the deletion to succeed. However, a successful deletion permanently deletes any detail records in the Recycle Bin.",
1975
- "name": "check-only",
1976
- "summary": "Validate delete command but don't delete anything from the org or the local project.",
1977
- "allowNo": false,
1978
- "type": "boolean"
1979
- },
1980
- "wait": {
1981
- "char": "w",
1982
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
1983
- "name": "wait",
1984
- "summary": "Number of minutes to wait for the command to finish.",
1985
- "hasDynamicHelp": true,
1986
- "multiple": false,
1987
- "type": "option"
1988
- },
1989
2016
  "tests": {
2017
+ "char": "t",
1990
2018
  "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
1991
2019
  "helpGroup": "Test",
1992
2020
  "name": "tests",
@@ -1996,255 +2024,227 @@
1996
2024
  "type": "option"
1997
2025
  },
1998
2026
  "test-level": {
1999
- "aliases": [
2000
- "testlevel"
2001
- ],
2002
2027
  "char": "l",
2003
- "deprecateAliases": true,
2004
- "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\nIf you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see “Running Tests in a Deployment” in the Metadata API Developer Guide.",
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.",
2005
2029
  "helpGroup": "Test",
2006
2030
  "name": "test-level",
2007
2031
  "summary": "Deployment Apex testing level.",
2032
+ "default": "RunLocalTests",
2008
2033
  "hasDynamicHelp": false,
2009
2034
  "multiple": false,
2010
2035
  "options": [
2011
- "NoTestRun",
2012
- "RunSpecifiedTests",
2036
+ "RunAllTestsInOrg",
2013
2037
  "RunLocalTests",
2014
- "RunAllTestsInOrg"
2038
+ "RunSpecifiedTests"
2015
2039
  ],
2016
2040
  "type": "option"
2017
2041
  },
2018
- "no-prompt": {
2019
- "aliases": [
2020
- "noprompt"
2042
+ "verbose": {
2043
+ "exclusive": [
2044
+ "concise"
2021
2045
  ],
2022
- "char": "r",
2023
- "deprecateAliases": true,
2024
- "name": "no-prompt",
2025
- "summary": "Don't prompt for delete confirmation.",
2046
+ "name": "verbose",
2047
+ "summary": "Show verbose output of the validation result.",
2026
2048
  "allowNo": false,
2027
2049
  "type": "boolean"
2028
2050
  },
2029
- "metadata": {
2030
- "char": "m",
2031
- "description": "If you specify this flag, don’t specify --source-dir.",
2032
- "name": "metadata",
2033
- "summary": "Metadata components to delete.",
2034
- "delimiter": ",",
2035
- "hasDynamicHelp": false,
2036
- "multiple": true,
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,
2037
2059
  "type": "option"
2038
2060
  },
2039
- "source-dir": {
2040
- "aliases": [
2041
- "sourcepath"
2042
- ],
2043
- "char": "p",
2044
- "deprecateAliases": true,
2045
- "description": "The supplied paths can be a single file (in which case the operation is applied to only one file) or a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --metadata.",
2046
- "name": "source-dir",
2047
- "summary": "Source file paths to delete.",
2048
- "delimiter": ",",
2061
+ "ignore-warnings": {
2062
+ "char": "g",
2063
+ "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
2064
+ "name": "ignore-warnings",
2065
+ "summary": "Ignore warnings and allow a deployment to complete successfully.",
2066
+ "allowNo": false,
2067
+ "type": "boolean"
2068
+ },
2069
+ "coverage-formatters": {
2070
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
2071
+ "helpGroup": "Test",
2072
+ "name": "coverage-formatters",
2073
+ "summary": "Format of the code coverage results.",
2049
2074
  "hasDynamicHelp": false,
2050
2075
  "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
+ ],
2051
2089
  "type": "option"
2052
2090
  },
2053
- "track-source": {
2054
- "aliases": [
2055
- "tracksource"
2056
- ],
2057
- "char": "t",
2058
- "deprecateAliases": true,
2059
- "exclusive": [
2060
- "check-only"
2061
- ],
2062
- "name": "track-source",
2063
- "summary": "If the delete succeeds, update the source tracking information.",
2091
+ "junit": {
2092
+ "helpGroup": "Test",
2093
+ "name": "junit",
2094
+ "summary": "Output JUnit test results.",
2064
2095
  "allowNo": false,
2065
2096
  "type": "boolean"
2066
2097
  },
2067
- "force-overwrite": {
2068
- "aliases": [
2069
- "forceoverwrite"
2070
- ],
2071
- "char": "f",
2072
- "dependsOn": [
2073
- "track-source"
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
+ }
2074
2109
  ],
2075
- "deprecateAliases": true,
2076
- "name": "force-overwrite",
2077
- "summary": "Ignore conflict warnings and overwrite changes to the org.",
2078
- "allowNo": false,
2079
- "type": "boolean"
2080
- },
2081
- "verbose": {
2082
- "name": "verbose",
2083
- "summary": "Verbose output of the delete result.",
2084
- "allowNo": false,
2085
- "type": "boolean"
2086
- }
2087
- },
2088
- "hasDynamicHelp": true,
2089
- "hiddenAliases": [],
2090
- "id": "project:delete:source",
2091
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2092
- "pluginName": "@salesforce/plugin-deploy-retrieve",
2093
- "pluginType": "core",
2094
- "strict": true,
2095
- "summary": "Delete source from your project and from a non-source-tracked org.",
2096
- "enableJsonFlag": true,
2097
- "requiresProject": true,
2098
- "isESM": true,
2099
- "relativePath": [
2100
- "lib",
2101
- "commands",
2102
- "project",
2103
- "delete",
2104
- "source.js"
2105
- ],
2106
- "aliasPermutations": [
2107
- "force:source:delete",
2108
- "source:force:delete",
2109
- "source:delete:force",
2110
- "force:delete:source",
2111
- "delete:force:source",
2112
- "delete:source:force"
2113
- ],
2114
- "permutations": [
2115
- "project:delete:source",
2116
- "delete:project:source",
2117
- "delete:source:project",
2118
- "project:source:delete",
2119
- "source:project:delete",
2120
- "source:delete:project"
2121
- ]
2122
- },
2123
- "project:delete:tracking": {
2124
- "aliases": [
2125
- "force:source:tracking:clear"
2126
- ],
2127
- "args": {},
2128
- "deprecateAliases": true,
2129
- "description": "WARNING: This command deletes or overwrites all existing source tracking files. Use with extreme caution.\n\nDeletes all local source tracking information. When you next run 'project deploy preview', Salesforce CLI displays all local and remote files as changed, and any files with the same name are listed as conflicts.",
2130
- "examples": [
2131
- "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
2132
- ],
2133
- "flags": {
2134
- "json": {
2135
- "description": "Format output as json.",
2136
- "helpGroup": "GLOBAL",
2137
- "name": "json",
2138
- "allowNo": false,
2139
- "type": "boolean"
2140
- },
2141
- "flags-dir": {
2142
- "helpGroup": "GLOBAL",
2143
- "name": "flags-dir",
2144
- "summary": "Import flag values from a directory.",
2110
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
2145
2111
  "hasDynamicHelp": false,
2146
2112
  "multiple": false,
2147
2113
  "type": "option"
2148
2114
  },
2149
- "api-version": {
2150
- "aliases": [
2151
- "apiversion"
2115
+ "purge-on-delete": {
2116
+ "dependsOn": [
2117
+ "manifest"
2152
2118
  ],
2153
- "deprecateAliases": true,
2154
- "description": "Override the api version used for api requests made by this command",
2155
- "name": "api-version",
2156
- "hasDynamicHelp": false,
2157
- "multiple": false,
2158
- "type": "option"
2119
+ "helpGroup": "Delete",
2120
+ "name": "purge-on-delete",
2121
+ "relationships": [
2122
+ {
2123
+ "type": "some",
2124
+ "flags": [
2125
+ "pre-destructive-changes",
2126
+ "post-destructive-changes"
2127
+ ]
2128
+ }
2129
+ ],
2130
+ "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
2131
+ "allowNo": false,
2132
+ "type": "boolean"
2159
2133
  },
2160
- "loglevel": {
2161
- "deprecated": {
2162
- "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
2163
- },
2164
- "hidden": true,
2165
- "name": "loglevel",
2134
+ "pre-destructive-changes": {
2135
+ "dependsOn": [
2136
+ "manifest"
2137
+ ],
2138
+ "helpGroup": "Delete",
2139
+ "name": "pre-destructive-changes",
2140
+ "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy",
2166
2141
  "hasDynamicHelp": false,
2167
2142
  "multiple": false,
2168
2143
  "type": "option"
2169
2144
  },
2170
- "target-org": {
2171
- "aliases": [
2172
- "targetusername",
2173
- "u"
2145
+ "post-destructive-changes": {
2146
+ "dependsOn": [
2147
+ "manifest"
2174
2148
  ],
2175
- "char": "o",
2176
- "deprecateAliases": true,
2177
- "name": "target-org",
2178
- "noCacheDefault": true,
2179
- "required": true,
2180
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2181
- "hasDynamicHelp": true,
2149
+ "helpGroup": "Delete",
2150
+ "name": "post-destructive-changes",
2151
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
2152
+ "hasDynamicHelp": false,
2182
2153
  "multiple": false,
2183
2154
  "type": "option"
2184
- },
2185
- "no-prompt": {
2186
- "aliases": [
2187
- "noprompt"
2188
- ],
2189
- "char": "p",
2190
- "deprecateAliases": true,
2191
- "name": "no-prompt",
2192
- "summary": "Don't prompt for source tracking override confirmation.",
2193
- "allowNo": false,
2194
- "type": "boolean"
2195
2155
  }
2196
2156
  },
2197
2157
  "hasDynamicHelp": true,
2198
2158
  "hiddenAliases": [],
2199
- "id": "project:delete:tracking",
2159
+ "id": "project:deploy:validate",
2200
2160
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2201
2161
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2202
2162
  "pluginType": "core",
2203
2163
  "strict": true,
2204
- "summary": "Delete all local source tracking information.",
2164
+ "summary": "Validate a metadata deployment without actually executing it.",
2205
2165
  "enableJsonFlag": true,
2206
- "requiresProject": true,
2166
+ "configurationVariablesSection": {
2167
+ "header": "CONFIGURATION VARIABLES",
2168
+ "body": [
2169
+ {
2170
+ "name": "target-org",
2171
+ "description": "Username or alias of the org that all commands run against by default. (sf only)"
2172
+ },
2173
+ {
2174
+ "name": "org-api-version",
2175
+ "description": "API version of your project. Default: API version of your Dev Hub org."
2176
+ }
2177
+ ]
2178
+ },
2179
+ "envVariablesSection": {
2180
+ "header": "ENVIRONMENT VARIABLES",
2181
+ "body": [
2182
+ {
2183
+ "name": "SF_TARGET_ORG",
2184
+ "description": "Username or alias of your default org. Overrides the target-org configuration variable."
2185
+ },
2186
+ {
2187
+ "name": "SF_USE_PROGRESS_BAR",
2188
+ "description": "Set to false to disable the progress bar when running the metadata deploy command."
2189
+ }
2190
+ ]
2191
+ },
2192
+ "errorCodes": {
2193
+ "header": "ERROR CODES",
2194
+ "body": [
2195
+ {
2196
+ "name": "Succeeded (0)",
2197
+ "description": "The deploy succeeded."
2198
+ },
2199
+ {
2200
+ "name": "Canceled (1)",
2201
+ "description": "The deploy was canceled."
2202
+ },
2203
+ {
2204
+ "name": "Failed (1)",
2205
+ "description": "The deploy failed."
2206
+ },
2207
+ {
2208
+ "name": "SucceededPartial (68)",
2209
+ "description": "The deploy partially succeeded."
2210
+ },
2211
+ {
2212
+ "name": "InProgress (69)",
2213
+ "description": "The deploy is in progress."
2214
+ },
2215
+ {
2216
+ "name": "Pending (69)",
2217
+ "description": "The deploy is pending."
2218
+ },
2219
+ {
2220
+ "name": "Canceling (69)",
2221
+ "description": "The deploy is being canceled."
2222
+ }
2223
+ ]
2224
+ },
2207
2225
  "isESM": true,
2208
2226
  "relativePath": [
2209
2227
  "lib",
2210
2228
  "commands",
2211
2229
  "project",
2212
- "delete",
2213
- "tracking.js"
2230
+ "deploy",
2231
+ "validate.js"
2214
2232
  ],
2215
2233
  "aliasPermutations": [
2216
- "force:source:tracking:clear",
2217
- "source:force:tracking:clear",
2218
- "source:tracking:force:clear",
2219
- "source:tracking:clear:force",
2220
- "force:tracking:source:clear",
2221
- "tracking:force:source:clear",
2222
- "tracking:source:force:clear",
2223
- "tracking:source:clear:force",
2224
- "force:tracking:clear:source",
2225
- "tracking:force:clear:source",
2226
- "tracking:clear:force:source",
2227
- "tracking:clear:source:force",
2228
- "force:source:clear:tracking",
2229
- "source:force:clear:tracking",
2230
- "source:clear:force:tracking",
2231
- "source:clear:tracking:force",
2232
- "force:clear:source:tracking",
2233
- "clear:force:source:tracking",
2234
- "clear:source:force:tracking",
2235
- "clear:source:tracking:force",
2236
- "force:clear:tracking:source",
2237
- "clear:force:tracking:source",
2238
- "clear:tracking:force:source",
2239
- "clear:tracking:source:force"
2234
+ "deploy:metadata:validate",
2235
+ "metadata:deploy:validate",
2236
+ "metadata:validate:deploy",
2237
+ "deploy:validate:metadata",
2238
+ "validate:deploy:metadata",
2239
+ "validate:metadata:deploy"
2240
2240
  ],
2241
2241
  "permutations": [
2242
- "project:delete:tracking",
2243
- "delete:project:tracking",
2244
- "delete:tracking:project",
2245
- "project:tracking:delete",
2246
- "tracking:project:delete",
2247
- "tracking:delete:project"
2242
+ "project:deploy:validate",
2243
+ "deploy:project:validate",
2244
+ "deploy:validate:project",
2245
+ "project:validate:deploy",
2246
+ "validate:project:deploy",
2247
+ "validate:deploy:project"
2248
2248
  ]
2249
2249
  },
2250
2250
  "project:generate:manifest": {
@@ -3051,5 +3051,5 @@
3051
3051
  ]
3052
3052
  }
3053
3053
  },
3054
- "version": "3.22.11"
3054
+ "version": "3.22.13"
3055
3055
  }