@salesforce/plugin-deploy-retrieve 3.22.11 → 3.22.12

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 +1010 -1010
  3. package/package.json +6 -6
@@ -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,151 @@
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:deploy:cancel": {
415
409
  "aliases": [
416
- "deploy:metadata:report"
410
+ "deploy:metadata:cancel"
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 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.",
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
+ "Cancel a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
417
+ "Cancel the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
425
418
  ],
426
419
  "flags": {
427
420
  "json": {
@@ -448,124 +441,219 @@
448
441
  "multiple": false,
449
442
  "type": "option"
450
443
  },
444
+ "async": {
445
+ "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
446
+ "exclusive": [
447
+ "wait"
448
+ ],
449
+ "name": "async",
450
+ "summary": "Run the command asynchronously.",
451
+ "allowNo": false,
452
+ "type": "boolean"
453
+ },
451
454
  "job-id": {
452
455
  "char": "i",
453
456
  "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
454
457
  "name": "job-id",
455
- "summary": "Job ID of the deploy operation you want to check the status of.",
458
+ "summary": "Job ID of the deploy operation you want to cancel.",
456
459
  "hasDynamicHelp": false,
457
460
  "multiple": false,
458
461
  "type": "option"
459
462
  },
460
463
  "use-most-recent": {
461
464
  "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.",
465
+ "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent deploy operations was more than 3 days ago, this flag won't find a job ID.",
463
466
  "name": "use-most-recent",
464
467
  "summary": "Use the job ID of the most recent deploy operation.",
465
468
  "allowNo": false,
466
469
  "type": "boolean"
467
470
  },
468
- "coverage-formatters": {
469
- "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
470
- "helpGroup": "Test",
471
- "name": "coverage-formatters",
472
- "summary": "Format of the code coverage results.",
473
- "hasDynamicHelp": false,
474
- "multiple": true,
475
- "options": [
476
- "clover",
477
- "cobertura",
478
- "html-spa",
479
- "html",
480
- "json",
481
- "json-summary",
482
- "lcovonly",
483
- "none",
484
- "teamcity",
485
- "text",
486
- "text-summary"
471
+ "wait": {
472
+ "char": "w",
473
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
474
+ "exclusive": [
475
+ "async"
487
476
  ],
477
+ "name": "wait",
478
+ "summary": "Number of minutes to wait for the command to complete and display results.",
479
+ "hasDynamicHelp": true,
480
+ "helpValue": "<minutes>",
481
+ "multiple": false,
482
+ "type": "option"
483
+ }
484
+ },
485
+ "hasDynamicHelp": true,
486
+ "hiddenAliases": [],
487
+ "id": "project:deploy:cancel",
488
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
489
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
490
+ "pluginType": "core",
491
+ "strict": true,
492
+ "summary": "Cancel a deploy operation.",
493
+ "enableJsonFlag": true,
494
+ "isESM": true,
495
+ "relativePath": [
496
+ "lib",
497
+ "commands",
498
+ "project",
499
+ "deploy",
500
+ "cancel.js"
501
+ ],
502
+ "aliasPermutations": [
503
+ "deploy:metadata:cancel",
504
+ "metadata:deploy:cancel",
505
+ "metadata:cancel:deploy",
506
+ "deploy:cancel:metadata",
507
+ "cancel:deploy:metadata",
508
+ "cancel:metadata:deploy"
509
+ ],
510
+ "permutations": [
511
+ "project:deploy:cancel",
512
+ "deploy:project:cancel",
513
+ "deploy:cancel:project",
514
+ "project:cancel:deploy",
515
+ "cancel:project:deploy",
516
+ "cancel:deploy:project"
517
+ ]
518
+ },
519
+ "project:deploy:preview": {
520
+ "aliases": [
521
+ "deploy:metadata:preview"
522
+ ],
523
+ "args": {},
524
+ "deprecateAliases": true,
525
+ "description": "You must run this command from within a project.\n\nThe command outputs a table that describes what will happen if you run the \"<%= config.bin %> project deploy start\" command. The table lists the metadata components that will be deployed and deleted. The table also lists the current conflicts between files in your local project and components in the org. Finally, the table lists the files that won't be deployed because they're included in your .forceignore file.\n\nIf your org allows source tracking, then this command displays potential conflicts between the org and your local project. Some orgs, such as production org, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo preview the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
526
+ "examples": [
527
+ "NOTE: The commands to preview a deployment and actually deploy it use similar flags. We provide a few preview examples here, but see the help for \"<%= config.bin %> project deploy start\" for more examples that you can adapt for previewing.",
528
+ "Preview the deployment of source files in a directory, such as force-app, to your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
529
+ "Preview the deployment of all Apex classes to an org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
530
+ "Preview deployment of a specific Apex class:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass",
531
+ "Preview deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
532
+ ],
533
+ "flags": {
534
+ "json": {
535
+ "description": "Format output as json.",
536
+ "helpGroup": "GLOBAL",
537
+ "name": "json",
538
+ "allowNo": false,
539
+ "type": "boolean"
540
+ },
541
+ "flags-dir": {
542
+ "helpGroup": "GLOBAL",
543
+ "name": "flags-dir",
544
+ "summary": "Import flag values from a directory.",
545
+ "hasDynamicHelp": false,
546
+ "multiple": false,
488
547
  "type": "option"
489
548
  },
490
- "junit": {
491
- "helpGroup": "Test",
492
- "name": "junit",
493
- "summary": "Output JUnit test results.",
549
+ "ignore-conflicts": {
550
+ "char": "c",
551
+ "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
552
+ "name": "ignore-conflicts",
553
+ "summary": "Don't display conflicts in preview of the deployment.",
494
554
  "allowNo": false,
495
555
  "type": "boolean"
496
556
  },
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
- }
557
+ "manifest": {
558
+ "char": "x",
559
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
560
+ "exclusive": [
561
+ "source-dir",
562
+ "metadata"
508
563
  ],
509
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
564
+ "name": "manifest",
565
+ "summary": "Full file path for manifest (package.xml) of components to preview.",
510
566
  "hasDynamicHelp": false,
511
567
  "multiple": false,
512
568
  "type": "option"
513
569
  },
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.",
570
+ "metadata": {
571
+ "char": "m",
572
+ "exclusive": [
573
+ "manifest",
574
+ "source-dir"
575
+ ],
576
+ "name": "metadata",
577
+ "summary": "Metadata component names to preview.",
578
+ "hasDynamicHelp": false,
579
+ "multiple": true,
580
+ "type": "option"
581
+ },
582
+ "source-dir": {
583
+ "char": "d",
584
+ "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
585
+ "exclusive": [
586
+ "manifest",
587
+ "metadata"
588
+ ],
589
+ "name": "source-dir",
590
+ "summary": "Path to the local source files to preview.",
591
+ "hasDynamicHelp": false,
592
+ "multiple": true,
593
+ "type": "option"
594
+ },
595
+ "target-org": {
596
+ "char": "o",
597
+ "name": "target-org",
598
+ "noCacheDefault": true,
599
+ "required": true,
600
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
519
601
  "hasDynamicHelp": true,
520
- "helpValue": "<minutes>",
521
602
  "multiple": false,
522
603
  "type": "option"
604
+ },
605
+ "concise": {
606
+ "name": "concise",
607
+ "summary": "Show only the changes that will be deployed; omits files that are forceignored.",
608
+ "allowNo": false,
609
+ "type": "boolean"
523
610
  }
524
611
  },
525
612
  "hasDynamicHelp": true,
526
613
  "hiddenAliases": [],
527
- "id": "project:deploy:report",
614
+ "id": "project:deploy:preview",
528
615
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
529
616
  "pluginName": "@salesforce/plugin-deploy-retrieve",
530
617
  "pluginType": "core",
531
618
  "strict": true,
532
- "summary": "Check or poll for the status of a deploy operation.",
619
+ "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
533
620
  "enableJsonFlag": true,
621
+ "requiresProject": true,
534
622
  "isESM": true,
535
623
  "relativePath": [
536
624
  "lib",
537
625
  "commands",
538
626
  "project",
539
627
  "deploy",
540
- "report.js"
628
+ "preview.js"
541
629
  ],
542
630
  "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"
631
+ "deploy:metadata:preview",
632
+ "metadata:deploy:preview",
633
+ "metadata:preview:deploy",
634
+ "deploy:preview:metadata",
635
+ "preview:deploy:metadata",
636
+ "preview:metadata:deploy"
549
637
  ],
550
638
  "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"
639
+ "project:deploy:preview",
640
+ "deploy:project:preview",
641
+ "deploy:preview:project",
642
+ "project:preview:deploy",
643
+ "preview:project:deploy",
644
+ "preview:deploy:project"
557
645
  ]
558
646
  },
559
- "project:deploy:resume": {
647
+ "project:deploy:quick": {
560
648
  "aliases": [
561
- "deploy:metadata:resume"
649
+ "deploy:metadata:quick"
562
650
  ],
563
651
  "args": {},
564
652
  "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.",
653
+ "description": "Before you run this command, first create a validated deployment with the \"<%= config.bin %> project deploy validate\" command, which returns a job ID. Validated deployments haven't been deployed to the org yet; you deploy them with this command. Either pass the job ID to this command or use the --use-most-recent flag to use the job ID of the most recently validated deployment. For the quick deploy to succeed, the associated validated deployment must also have succeeded.\n\nExecuting this quick deploy command takes less time than a standard deploy because it skips running Apex tests. These tests were previously run as part of the validation. Validating first and then running a quick deploy is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nThis command doesn't support source-tracking. The source you deploy overwrites the corresponding metadata in your org. This command doesn’t attempt to merge your source with the versions in your org.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. Use \"<%= config.bin %> project deploy start\" instead.",
566
654
  "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"
655
+ "Run a quick deploy to your default org using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
656
+ "Asynchronously run a quick deploy of the most recently validated deployment to an org with alias \"my-prod-org\":\n<%= config.bin %> <%= command.id %> --async --use-most-recent --target-org my-prod-org"
569
657
  ],
570
658
  "flags": {
571
659
  "json": {
@@ -583,29 +671,48 @@
583
671
  "multiple": false,
584
672
  "type": "option"
585
673
  },
674
+ "async": {
675
+ "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
676
+ "exclusive": [
677
+ "wait"
678
+ ],
679
+ "name": "async",
680
+ "summary": "Run the command asynchronously.",
681
+ "allowNo": false,
682
+ "type": "boolean"
683
+ },
586
684
  "concise": {
587
685
  "exclusive": [
588
686
  "verbose"
589
687
  ],
590
688
  "name": "concise",
591
- "summary": "Show concise output of the deploy operation result.",
689
+ "summary": "Show concise output of the deploy result.",
592
690
  "allowNo": false,
593
691
  "type": "boolean"
594
692
  },
595
693
  "job-id": {
596
694
  "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.",
695
+ "description": "The job ID is valid for 10 days from when you started the validation.",
598
696
  "name": "job-id",
599
- "summary": "Job ID of the deploy operation you want to resume.",
697
+ "summary": "Job ID of the deployment you want to quick deploy.",
600
698
  "hasDynamicHelp": false,
601
699
  "multiple": false,
602
700
  "type": "option"
603
701
  },
702
+ "target-org": {
703
+ "char": "o",
704
+ "name": "target-org",
705
+ "noCacheDefault": true,
706
+ "summary": "Username or alias of the target org.",
707
+ "hasDynamicHelp": true,
708
+ "multiple": false,
709
+ "type": "option"
710
+ },
604
711
  "use-most-recent": {
605
712
  "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.",
713
+ "description": "For performance reasons, this flag uses only job IDs that were validated in the past 3 days or less. If your most recent deployment validation was more than 3 days ago, this flag won't find a job ID.",
607
714
  "name": "use-most-recent",
608
- "summary": "Use the job ID of the most recent deploy operation.",
715
+ "summary": "Use the job ID of the most recently validated deployment.",
609
716
  "allowNo": false,
610
717
  "type": "boolean"
611
718
  },
@@ -614,62 +721,29 @@
614
721
  "concise"
615
722
  ],
616
723
  "name": "verbose",
617
- "summary": "Show verbose output of the deploy operation result.",
724
+ "summary": "Show verbose output of the deploy result.",
618
725
  "allowNo": false,
619
726
  "type": "boolean"
620
727
  },
621
728
  "wait": {
622
729
  "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\".",
730
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
731
+ "exclusive": [
732
+ "async"
733
+ ],
624
734
  "name": "wait",
625
735
  "summary": "Number of minutes to wait for the command to complete and display results.",
736
+ "default": "33 minutes",
626
737
  "hasDynamicHelp": true,
627
738
  "helpValue": "<minutes>",
628
739
  "multiple": false,
629
740
  "type": "option"
630
741
  },
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"
650
- ],
651
- "type": "option"
652
- },
653
- "junit": {
654
- "helpGroup": "Test",
655
- "name": "junit",
656
- "summary": "Output JUnit test results.",
657
- "allowNo": false,
658
- "type": "boolean"
659
- },
660
- "results-dir": {
661
- "helpGroup": "Test",
662
- "name": "results-dir",
663
- "relationships": [
664
- {
665
- "type": "some",
666
- "flags": [
667
- "coverage-formatters",
668
- "junit"
669
- ]
670
- }
671
- ],
672
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
742
+ "api-version": {
743
+ "char": "a",
744
+ "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
745
+ "name": "api-version",
746
+ "summary": "Target API version for the deploy.",
673
747
  "hasDynamicHelp": false,
674
748
  "multiple": false,
675
749
  "type": "option"
@@ -677,22 +751,13 @@
677
751
  },
678
752
  "hasDynamicHelp": true,
679
753
  "hiddenAliases": [],
680
- "id": "project:deploy:resume",
754
+ "id": "project:deploy:quick",
681
755
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
682
756
  "pluginName": "@salesforce/plugin-deploy-retrieve",
683
757
  "pluginType": "core",
684
758
  "strict": true,
685
- "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
759
+ "summary": "Quickly deploy a validated deployment to an org.",
686
760
  "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
761
  "errorCodes": {
697
762
  "header": "ERROR CODES",
698
763
  "body": [
@@ -732,47 +797,36 @@
732
797
  "commands",
733
798
  "project",
734
799
  "deploy",
735
- "resume.js"
800
+ "quick.js"
736
801
  ],
737
802
  "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"
803
+ "deploy:metadata:quick",
804
+ "metadata:deploy:quick",
805
+ "metadata:quick:deploy",
806
+ "deploy:quick:metadata",
807
+ "quick:deploy:metadata",
808
+ "quick:metadata:deploy"
744
809
  ],
745
810
  "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"
811
+ "project:deploy:quick",
812
+ "deploy:project:quick",
813
+ "deploy:quick:project",
814
+ "project:quick:deploy",
815
+ "quick:project:deploy",
816
+ "quick:deploy:project"
752
817
  ]
753
818
  },
754
- "project:deploy:start": {
819
+ "project:deploy:report": {
755
820
  "aliases": [
756
- "deploy:metadata"
821
+ "deploy:metadata:report"
757
822
  ],
758
823
  "args": {},
759
824
  "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.",
825
+ "description": "Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation. If you specify the --wait flag, the command polls for the status every second until the timeout of --wait minutes. If you don't specify the --wait flag, the command simply checks and displays the status of the deploy; the command doesn't poll for the status.\n\nYou typically don't specify the --target-org flag because the cached job already references the org to which you deployed. But if you run this command on a computer different than the one from which you deployed, then you must specify the --target-org and it must point to the same org.\n\nThis command doesn't update source tracking information.",
761
826
  "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"
827
+ "Check the status using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
828
+ "Check the status of the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent",
829
+ "Poll for the status using a job ID and target org:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2 --target-org me@my.org --wait 30"
776
830
  ],
777
831
  "flags": {
778
832
  "json": {
@@ -790,229 +844,195 @@
790
844
  "multiple": false,
791
845
  "type": "option"
792
846
  },
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,
847
+ "target-org": {
848
+ "char": "o",
849
+ "name": "target-org",
850
+ "noCacheDefault": true,
851
+ "summary": "Username or alias of the target org.",
852
+ "hasDynamicHelp": true,
799
853
  "multiple": false,
800
854
  "type": "option"
801
855
  },
802
- "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\".",
804
- "exclusive": [
805
- "wait"
806
- ],
807
- "name": "async",
808
- "summary": "Run the command asynchronously.",
809
- "allowNo": false,
810
- "type": "boolean"
811
- },
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"
856
+ "job-id": {
857
+ "char": "i",
858
+ "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
859
+ "name": "job-id",
860
+ "summary": "Job ID of the deploy operation you want to check the status of.",
861
+ "hasDynamicHelp": false,
862
+ "multiple": false,
863
+ "type": "option"
834
864
  },
835
- "ignore-errors": {
865
+ "use-most-recent": {
836
866
  "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.",
867
+ "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
868
+ "name": "use-most-recent",
869
+ "summary": "Use the job ID of the most recent deploy operation.",
848
870
  "allowNo": false,
849
871
  "type": "boolean"
850
872
  },
851
- "manifest": {
852
- "char": "x",
853
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
854
- "exclusive": [
855
- "source-dir",
856
- "metadata",
857
- "metadata-dir"
858
- ],
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,
864
- "type": "option"
865
- },
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*`.",
873
+ "coverage-formatters": {
874
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
875
+ "helpGroup": "Test",
876
+ "name": "coverage-formatters",
877
+ "summary": "Format of the code coverage results.",
876
878
  "hasDynamicHelp": false,
877
879
  "multiple": true,
878
- "type": "option"
879
- },
880
- "metadata-dir": {
881
- "exclusive": [
882
- "manifest",
883
- "source-dir",
884
- "metadata"
880
+ "options": [
881
+ "clover",
882
+ "cobertura",
883
+ "html-spa",
884
+ "html",
885
+ "json",
886
+ "json-summary",
887
+ "lcovonly",
888
+ "none",
889
+ "teamcity",
890
+ "text",
891
+ "text-summary"
885
892
  ],
886
- "helpGroup": "Metadata API Format",
887
- "name": "metadata-dir",
888
- "summary": "Root of directory or zip file of metadata formatted files to deploy.",
889
- "hasDynamicHelp": false,
890
- "multiple": false,
891
893
  "type": "option"
892
894
  },
893
- "single-package": {
894
- "dependsOn": [
895
- "metadata-dir"
896
- ],
897
- "helpGroup": "Metadata API Format",
898
- "name": "single-package",
899
- "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
895
+ "junit": {
896
+ "helpGroup": "Test",
897
+ "name": "junit",
898
+ "summary": "Output JUnit test results.",
900
899
  "allowNo": false,
901
900
  "type": "boolean"
902
901
  },
903
- "source-dir": {
904
- "char": "d",
905
- "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
906
- "exclusive": [
907
- "manifest",
908
- "metadata",
909
- "metadata-dir"
902
+ "results-dir": {
903
+ "helpGroup": "Test",
904
+ "name": "results-dir",
905
+ "relationships": [
906
+ {
907
+ "type": "some",
908
+ "flags": [
909
+ "coverage-formatters",
910
+ "junit"
911
+ ]
912
+ }
910
913
  ],
911
- "helpGroup": "Source Format",
912
- "name": "source-dir",
913
- "summary": "Path to the local source files to deploy.",
914
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
914
915
  "hasDynamicHelp": false,
915
- "multiple": true,
916
+ "multiple": false,
916
917
  "type": "option"
917
918
  },
918
- "target-org": {
919
- "char": "o",
920
- "name": "target-org",
921
- "noCacheDefault": true,
922
- "required": true,
923
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
919
+ "wait": {
920
+ "char": "w",
921
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
922
+ "name": "wait",
923
+ "summary": "Number of minutes to wait for command to complete and display results.",
924
924
  "hasDynamicHelp": true,
925
+ "helpValue": "<minutes>",
925
926
  "multiple": false,
926
927
  "type": "option"
928
+ }
929
+ },
930
+ "hasDynamicHelp": true,
931
+ "hiddenAliases": [],
932
+ "id": "project:deploy:report",
933
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
934
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
935
+ "pluginType": "core",
936
+ "strict": true,
937
+ "summary": "Check or poll for the status of a deploy operation.",
938
+ "enableJsonFlag": true,
939
+ "isESM": true,
940
+ "relativePath": [
941
+ "lib",
942
+ "commands",
943
+ "project",
944
+ "deploy",
945
+ "report.js"
946
+ ],
947
+ "aliasPermutations": [
948
+ "deploy:metadata:report",
949
+ "metadata:deploy:report",
950
+ "metadata:report:deploy",
951
+ "deploy:report:metadata",
952
+ "report:deploy:metadata",
953
+ "report:metadata:deploy"
954
+ ],
955
+ "permutations": [
956
+ "project:deploy:report",
957
+ "deploy:project:report",
958
+ "deploy:report:project",
959
+ "project:report:deploy",
960
+ "report:project:deploy",
961
+ "report:deploy:project"
962
+ ]
963
+ },
964
+ "project:deploy:resume": {
965
+ "aliases": [
966
+ "deploy:metadata:resume"
967
+ ],
968
+ "args": {},
969
+ "deprecateAliases": true,
970
+ "description": "Use this command to resume watching a deploy operation if the original command times out or you specified the --async flag. Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations. This command doesn't resume the original operation itself, because the operation always continues after you've started it, regardless of whether you're watching it or not. When the deploy completes, source tracking information is updated as needed.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation.",
971
+ "examples": [
972
+ "Resume watching a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
973
+ "Resume watching the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
974
+ ],
975
+ "flags": {
976
+ "json": {
977
+ "description": "Format output as json.",
978
+ "helpGroup": "GLOBAL",
979
+ "name": "json",
980
+ "allowNo": false,
981
+ "type": "boolean"
927
982
  },
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.",
983
+ "flags-dir": {
984
+ "helpGroup": "GLOBAL",
985
+ "name": "flags-dir",
986
+ "summary": "Import flag values from a directory.",
934
987
  "hasDynamicHelp": false,
935
- "multiple": true,
988
+ "multiple": false,
936
989
  "type": "option"
937
990
  },
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.",
991
+ "concise": {
992
+ "exclusive": [
993
+ "verbose"
994
+ ],
995
+ "name": "concise",
996
+ "summary": "Show concise output of the deploy operation result.",
997
+ "allowNo": false,
998
+ "type": "boolean"
999
+ },
1000
+ "job-id": {
1001
+ "char": "i",
1002
+ "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
1003
+ "name": "job-id",
1004
+ "summary": "Job ID of the deploy operation you want to resume.",
944
1005
  "hasDynamicHelp": false,
945
1006
  "multiple": false,
946
- "options": [
947
- "NoTestRun",
948
- "RunSpecifiedTests",
949
- "RunLocalTests",
950
- "RunAllTestsInOrg"
951
- ],
952
1007
  "type": "option"
953
1008
  },
1009
+ "use-most-recent": {
1010
+ "char": "r",
1011
+ "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
1012
+ "name": "use-most-recent",
1013
+ "summary": "Use the job ID of the most recent deploy operation.",
1014
+ "allowNo": false,
1015
+ "type": "boolean"
1016
+ },
954
1017
  "verbose": {
955
1018
  "exclusive": [
956
1019
  "concise"
957
1020
  ],
958
1021
  "name": "verbose",
959
- "summary": "Show verbose output of the deploy result.",
1022
+ "summary": "Show verbose output of the deploy operation result.",
960
1023
  "allowNo": false,
961
1024
  "type": "boolean"
962
1025
  },
963
1026
  "wait": {
964
1027
  "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\".",
966
- "exclusive": [
967
- "async"
968
- ],
1028
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy operation, run this command again. To check the status of the deploy operation, run \"<%= config.bin %> project deploy report\".",
969
1029
  "name": "wait",
970
- "summary": "Number of minutes to wait for command to complete and display results.",
1030
+ "summary": "Number of minutes to wait for the command to complete and display results.",
971
1031
  "hasDynamicHelp": true,
972
1032
  "helpValue": "<minutes>",
973
1033
  "multiple": false,
974
1034
  "type": "option"
975
1035
  },
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.",
991
- "allowNo": false,
992
- "type": "boolean"
993
- },
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.",
1001
- "hasDynamicHelp": false,
1002
- "multiple": false,
1003
- "type": "option"
1004
- },
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.",
1012
- "hasDynamicHelp": false,
1013
- "multiple": false,
1014
- "type": "option"
1015
- },
1016
1036
  "coverage-formatters": {
1017
1037
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1018
1038
  "helpGroup": "Test",
@@ -1062,33 +1082,16 @@
1062
1082
  },
1063
1083
  "hasDynamicHelp": true,
1064
1084
  "hiddenAliases": [],
1065
- "id": "project:deploy:start",
1085
+ "id": "project:deploy:resume",
1066
1086
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1067
1087
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1068
1088
  "pluginType": "core",
1069
1089
  "strict": true,
1070
- "summary": "Deploy metadata to an org from your local project.",
1090
+ "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1071
1091
  "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
1092
  "envVariablesSection": {
1086
1093
  "header": "ENVIRONMENT VARIABLES",
1087
1094
  "body": [
1088
- {
1089
- "name": "SF_TARGET_ORG",
1090
- "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1091
- },
1092
1095
  {
1093
1096
  "name": "SF_USE_PROGRESS_BAR",
1094
1097
  "description": "Set to false to disable the progress bar when running the metadata deploy command."
@@ -1134,34 +1137,47 @@
1134
1137
  "commands",
1135
1138
  "project",
1136
1139
  "deploy",
1137
- "start.js"
1140
+ "resume.js"
1138
1141
  ],
1139
1142
  "aliasPermutations": [
1140
- "deploy:metadata",
1141
- "metadata:deploy"
1143
+ "deploy:metadata:resume",
1144
+ "metadata:deploy:resume",
1145
+ "metadata:resume:deploy",
1146
+ "deploy:resume:metadata",
1147
+ "resume:deploy:metadata",
1148
+ "resume:metadata:deploy"
1142
1149
  ],
1143
1150
  "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"
1151
+ "project:deploy:resume",
1152
+ "deploy:project:resume",
1153
+ "deploy:resume:project",
1154
+ "project:resume:deploy",
1155
+ "resume:project:deploy",
1156
+ "resume:deploy:project"
1150
1157
  ]
1151
1158
  },
1152
- "project:deploy:validate": {
1159
+ "project:deploy:start": {
1153
1160
  "aliases": [
1154
- "deploy:metadata:validate"
1161
+ "deploy:metadata"
1155
1162
  ],
1156
1163
  "args": {},
1157
1164
  "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.",
1165
+ "description": "You must run this command from within a project.\n\nMetadata components are deployed in source format by default. Deploy them in metadata format by specifying the --metadata-dir flag, which specifies the root directory or ZIP file that contains the metadata formatted files you want to deploy.\n\nIf your org allows source tracking, then this command tracks the changes in your source. Some orgs, such as production orgs, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo deploy multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
1159
1166
  "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"
1167
+ "Deploy local changes not in the org; uses your default org:\n<%= config.bin %> <%= command.id %>",
1168
+ "Deploy all source files in the \"force-app\" directory to an org with alias \"my-scratch\"; show only concise output, in other words don't print a list of all the source that was deployed:\n<%= config.bin %> <%= command.id %> --source-dir force-app --target-org my-scratch --concise",
1169
+ "Deploy all the Apex classes and custom objects that are in the \"force-app\" directory. The list views, layouts, etc, that are associated with the custom objects are also deployed. Both examples are equivalent:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes force-app/main/default/objects\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes --source-dir force-app/main/default/objects",
1170
+ "Deploy all Apex classes that are in all package directories defined in the \"sfdx-project.json\" file:\n<%= config.bin %> <%= command.id %> --metadata ApexClass",
1171
+ "Deploy a specific Apex class; ignore any conflicts between the local project and org (be careful with this flag, because it will overwrite the Apex class in the org if there are conflicts!):\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --ignore-conflicts",
1172
+ "Deploy specific Apex classes that match a pattern; in this example, deploy Apex classes whose names contain the string \"MyApex\". Also ignore any deployment warnings (again, be careful with this flag! You typically want to see the warnings):\n<%= config.bin %> <%= command.id %> --metadata 'ApexClass:MyApex*' --ignore-warnings",
1173
+ "Deploy a custom object called ExcitingObject that's in the SBQQ namespace:\nsf <%= command.id %> --metadata CustomObject:SBQQ__ExcitingObject",
1174
+ "Deploy all custom objects in the SBQQ namespace by using a wildcard and quotes:\nsf <%= command.id %> --metadata 'CustomObject:SBQQ__*'",
1175
+ "Deploy all custom objects and Apex classes found in all defined package directories (both examples are equivalent):\n<%= config.bin %> <%= command.id %> --metadata CustomObject ApexClass\n<%= config.bin %> <%= command.id %> --metadata CustomObject --metadata ApexClass",
1176
+ "Deploy all Apex classes and a profile that has a space in its name:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --metadata \"Profile:My Profile\"",
1177
+ "Deploy all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml",
1178
+ "Run the tests that aren’t in any managed packages as part of a deployment:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests",
1179
+ "Deploy all metadata formatted files in the \"MDAPI\" directory:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI",
1180
+ "Deploy all metadata formatted files in the \"MDAPI\" directory; items listed in the MDAPI/destructiveChangesPre.xml and MDAPI/destructiveChangesPost.xml manifests are immediately eligible for deletion rather than stored in the Recycle Bin:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI --purge-on-delete"
1165
1181
  ],
1166
1182
  "flags": {
1167
1183
  "json": {
@@ -1183,13 +1199,16 @@
1183
1199
  "char": "a",
1184
1200
  "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1185
1201
  "name": "api-version",
1186
- "summary": "Target API version for the validation.",
1202
+ "summary": "Target API version for the deploy.",
1187
1203
  "hasDynamicHelp": false,
1188
1204
  "multiple": false,
1189
1205
  "type": "option"
1190
1206
  },
1191
1207
  "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\".",
1208
+ "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1209
+ "exclusive": [
1210
+ "wait"
1211
+ ],
1193
1212
  "name": "async",
1194
1213
  "summary": "Run the command asynchronously.",
1195
1214
  "allowNo": false,
@@ -1200,40 +1219,75 @@
1200
1219
  "verbose"
1201
1220
  ],
1202
1221
  "name": "concise",
1203
- "summary": "Show concise output of the validation result.",
1222
+ "summary": "Show concise output of the deploy result.",
1204
1223
  "allowNo": false,
1205
1224
  "type": "boolean"
1206
1225
  },
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"
1226
+ "dry-run": {
1227
+ "name": "dry-run",
1228
+ "summary": "Validate deploy and run Apex tests but don’t save to the org.",
1229
+ "allowNo": false,
1230
+ "type": "boolean"
1225
1231
  },
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.",
1232
+ "ignore-conflicts": {
1233
+ "char": "c",
1234
+ "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
1235
+ "name": "ignore-conflicts",
1236
+ "summary": "Ignore conflicts and deploy local files, even if they overwrite changes in the org.",
1237
+ "allowNo": false,
1238
+ "type": "boolean"
1239
+ },
1240
+ "ignore-errors": {
1241
+ "char": "r",
1242
+ "description": "Never use this flag when deploying to a production org. If you specify it, components without errors are deployed and components with errors are skipped, and could result in an inconsistent production org.",
1243
+ "name": "ignore-errors",
1244
+ "summary": "Ignore any errors and don’t roll back deployment.",
1245
+ "allowNo": false,
1246
+ "type": "boolean"
1247
+ },
1248
+ "ignore-warnings": {
1249
+ "char": "g",
1250
+ "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
1251
+ "name": "ignore-warnings",
1252
+ "summary": "Ignore warnings and allow a deployment to complete successfully.",
1253
+ "allowNo": false,
1254
+ "type": "boolean"
1255
+ },
1256
+ "manifest": {
1257
+ "char": "x",
1258
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1259
+ "exclusive": [
1260
+ "source-dir",
1261
+ "metadata",
1262
+ "metadata-dir"
1263
+ ],
1229
1264
  "helpGroup": "Source Format",
1230
- "name": "source-dir",
1231
- "summary": "Path to the local source files to validate for deployment.",
1265
+ "name": "manifest",
1266
+ "summary": "Full file path for manifest (package.xml) of components to deploy.",
1267
+ "hasDynamicHelp": false,
1268
+ "multiple": false,
1269
+ "type": "option"
1270
+ },
1271
+ "metadata": {
1272
+ "char": "m",
1273
+ "exclusive": [
1274
+ "manifest",
1275
+ "source-dir",
1276
+ "metadata-dir"
1277
+ ],
1278
+ "helpGroup": "Source Format",
1279
+ "name": "metadata",
1280
+ "summary": "Metadata component names to deploy. Wildcards (`*` ) supported as long as you use quotes, such as `ApexClass:MyClass*`.",
1232
1281
  "hasDynamicHelp": false,
1233
1282
  "multiple": true,
1234
1283
  "type": "option"
1235
1284
  },
1236
1285
  "metadata-dir": {
1286
+ "exclusive": [
1287
+ "manifest",
1288
+ "source-dir",
1289
+ "metadata"
1290
+ ],
1237
1291
  "helpGroup": "Metadata API Format",
1238
1292
  "name": "metadata-dir",
1239
1293
  "summary": "Root of directory or zip file of metadata formatted files to deploy.",
@@ -1251,6 +1305,21 @@
1251
1305
  "allowNo": false,
1252
1306
  "type": "boolean"
1253
1307
  },
1308
+ "source-dir": {
1309
+ "char": "d",
1310
+ "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1311
+ "exclusive": [
1312
+ "manifest",
1313
+ "metadata",
1314
+ "metadata-dir"
1315
+ ],
1316
+ "helpGroup": "Source Format",
1317
+ "name": "source-dir",
1318
+ "summary": "Path to the local source files to deploy.",
1319
+ "hasDynamicHelp": false,
1320
+ "multiple": true,
1321
+ "type": "option"
1322
+ },
1254
1323
  "target-org": {
1255
1324
  "char": "o",
1256
1325
  "name": "target-org",
@@ -1273,17 +1342,17 @@
1273
1342
  },
1274
1343
  "test-level": {
1275
1344
  "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.",
1345
+ "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\n If you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see [Running Tests in a Deployment](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
1277
1346
  "helpGroup": "Test",
1278
1347
  "name": "test-level",
1279
1348
  "summary": "Deployment Apex testing level.",
1280
- "default": "RunLocalTests",
1281
1349
  "hasDynamicHelp": false,
1282
1350
  "multiple": false,
1283
1351
  "options": [
1284
- "RunAllTestsInOrg",
1352
+ "NoTestRun",
1353
+ "RunSpecifiedTests",
1285
1354
  "RunLocalTests",
1286
- "RunSpecifiedTests"
1355
+ "RunAllTestsInOrg"
1287
1356
  ],
1288
1357
  "type": "option"
1289
1358
  },
@@ -1292,28 +1361,63 @@
1292
1361
  "concise"
1293
1362
  ],
1294
1363
  "name": "verbose",
1295
- "summary": "Show verbose output of the validation result.",
1364
+ "summary": "Show verbose output of the deploy result.",
1296
1365
  "allowNo": false,
1297
1366
  "type": "boolean"
1298
1367
  },
1299
1368
  "wait": {
1300
1369
  "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\".",
1370
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1371
+ "exclusive": [
1372
+ "async"
1373
+ ],
1302
1374
  "name": "wait",
1303
- "summary": "Number of minutes to wait for the command to complete and display results.",
1375
+ "summary": "Number of minutes to wait for command to complete and display results.",
1304
1376
  "hasDynamicHelp": true,
1305
1377
  "helpValue": "<minutes>",
1306
1378
  "multiple": false,
1307
1379
  "type": "option"
1308
1380
  },
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.",
1381
+ "purge-on-delete": {
1382
+ "helpGroup": "Delete",
1383
+ "name": "purge-on-delete",
1384
+ "relationships": [
1385
+ {
1386
+ "type": "some",
1387
+ "flags": [
1388
+ "pre-destructive-changes",
1389
+ "manifest",
1390
+ "metadata-dir",
1391
+ "post-destructive-changes"
1392
+ ]
1393
+ }
1394
+ ],
1395
+ "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
1314
1396
  "allowNo": false,
1315
1397
  "type": "boolean"
1316
1398
  },
1399
+ "pre-destructive-changes": {
1400
+ "dependsOn": [
1401
+ "manifest"
1402
+ ],
1403
+ "helpGroup": "Delete",
1404
+ "name": "pre-destructive-changes",
1405
+ "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy.",
1406
+ "hasDynamicHelp": false,
1407
+ "multiple": false,
1408
+ "type": "option"
1409
+ },
1410
+ "post-destructive-changes": {
1411
+ "dependsOn": [
1412
+ "manifest"
1413
+ ],
1414
+ "helpGroup": "Delete",
1415
+ "name": "post-destructive-changes",
1416
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1417
+ "hasDynamicHelp": false,
1418
+ "multiple": false,
1419
+ "type": "option"
1420
+ },
1317
1421
  "coverage-formatters": {
1318
1422
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1319
1423
  "helpGroup": "Test",
@@ -1359,57 +1463,16 @@
1359
1463
  "hasDynamicHelp": false,
1360
1464
  "multiple": false,
1361
1465
  "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
1466
  }
1404
1467
  },
1405
1468
  "hasDynamicHelp": true,
1406
1469
  "hiddenAliases": [],
1407
- "id": "project:deploy:validate",
1470
+ "id": "project:deploy:start",
1408
1471
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1409
1472
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1410
1473
  "pluginType": "core",
1411
1474
  "strict": true,
1412
- "summary": "Validate a metadata deployment without actually executing it.",
1475
+ "summary": "Deploy metadata to an org from your local project.",
1413
1476
  "enableJsonFlag": true,
1414
1477
  "configurationVariablesSection": {
1415
1478
  "header": "CONFIGURATION VARIABLES",
@@ -1476,35 +1539,34 @@
1476
1539
  "commands",
1477
1540
  "project",
1478
1541
  "deploy",
1479
- "validate.js"
1542
+ "start.js"
1480
1543
  ],
1481
1544
  "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"
1545
+ "deploy:metadata",
1546
+ "metadata:deploy"
1488
1547
  ],
1489
1548
  "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"
1549
+ "project:deploy:start",
1550
+ "deploy:project:start",
1551
+ "deploy:start:project",
1552
+ "project:start:deploy",
1553
+ "start:project:deploy",
1554
+ "start:deploy:project"
1496
1555
  ]
1497
1556
  },
1498
- "project:convert:mdapi": {
1557
+ "project:deploy:validate": {
1499
1558
  "aliases": [
1500
- "force:mdapi:convert"
1559
+ "deploy:metadata:validate"
1501
1560
  ],
1502
1561
  "args": {},
1503
1562
  "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.",
1563
+ "description": "Use this command to verify whether a deployment will succeed without actually deploying the metadata to your org. This command is similar to \"<%= config.bin %> project deploy start\", except you're required to run Apex tests, and the command returns a job ID rather than executing the deployment. If the validation succeeds, then you pass this job ID to the \"<%= config.bin %> project deploy quick\" command to actually deploy the metadata. This quick deploy takes less time because it skips running Apex tests. The job ID is valid for 10 days from when you started the validation. Validating first is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nYou must run this command from within a project.\n\nThis command doesn't support source-tracking. When you quick deploy with the resulting job ID, the source you deploy overwrites the corresponding metadata in your org.\n\nTo validate the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. If you want to validate a deployment with tests on a sandbox, use \"<%= config.bin %> project deploy start --dry-run --test-level RunLocalTests\" instead.",
1505
1564
  "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"
1565
+ "NOTE: These examples focus on validating large deployments. See the help for \"<%= config.bin %> project deploy start\" for examples of deploying smaller sets of metadata which you can also use to validate.",
1566
+ "Validate the deployment of all source files in the \"force-app\" directory to the default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
1567
+ "Validate the deployment of all source files in two directories: \"force-app\" and \"force-app-utils\":\n<%= config.bin %> <%= command.id %> --source-dir force-app --source-dir force-app-utils",
1568
+ "Asynchronously validate the deployment and run all tests in the org with alias \"my-prod-org\"; command immediately returns the job ID:\n<%= config.bin %> <%= command.id %> --source-dir force-app --async --test-level RunAllTestsInOrg --target-org my-prod-org",
1569
+ "Validate the deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
1508
1570
  ],
1509
1571
  "flags": {
1510
1572
  "json": {
@@ -1523,381 +1585,319 @@
1523
1585
  "type": "option"
1524
1586
  },
1525
1587
  "api-version": {
1526
- "aliases": [
1527
- "apiversion"
1528
- ],
1529
- "deprecateAliases": true,
1530
- "description": "Override the api version used for api requests made by this command",
1588
+ "char": "a",
1589
+ "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1531
1590
  "name": "api-version",
1591
+ "summary": "Target API version for the validation.",
1532
1592
  "hasDynamicHelp": false,
1533
1593
  "multiple": false,
1534
1594
  "type": "option"
1535
1595
  },
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",
1596
+ "async": {
1597
+ "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
1598
+ "name": "async",
1599
+ "summary": "Run the command asynchronously.",
1600
+ "allowNo": false,
1601
+ "type": "boolean"
1602
+ },
1603
+ "concise": {
1604
+ "exclusive": [
1605
+ "verbose"
1606
+ ],
1607
+ "name": "concise",
1608
+ "summary": "Show concise output of the validation result.",
1609
+ "allowNo": false,
1610
+ "type": "boolean"
1611
+ },
1612
+ "manifest": {
1613
+ "char": "x",
1614
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1615
+ "helpGroup": "Source Format",
1616
+ "name": "manifest",
1617
+ "summary": "Full file path for manifest (package.xml) of components to validate for deployment.",
1542
1618
  "hasDynamicHelp": false,
1543
1619
  "multiple": false,
1544
1620
  "type": "option"
1545
1621
  },
1546
- "root-dir": {
1547
- "aliases": [
1548
- "rootdir"
1549
- ],
1550
- "char": "r",
1551
- "deprecateAliases": true,
1552
- "name": "root-dir",
1553
- "required": true,
1554
- "summary": "Root directory that contains the Metadata API–formatted metadata.",
1622
+ "metadata": {
1623
+ "char": "m",
1624
+ "helpGroup": "Source Format",
1625
+ "name": "metadata",
1626
+ "summary": "Metadata component names to validate for deployment.",
1555
1627
  "hasDynamicHelp": false,
1556
- "multiple": false,
1628
+ "multiple": true,
1557
1629
  "type": "option"
1558
1630
  },
1559
- "output-dir": {
1560
- "aliases": [
1561
- "outputdir"
1562
- ],
1631
+ "source-dir": {
1563
1632
  "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"
1570
- },
1571
- "manifest": {
1572
- "char": "x",
1573
- "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
1574
- "name": "manifest",
1575
- "summary": "File path to manifest (package.xml) of metadata types to convert.",
1633
+ "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1634
+ "helpGroup": "Source Format",
1635
+ "name": "source-dir",
1636
+ "summary": "Path to the local source files to validate for deployment.",
1576
1637
  "hasDynamicHelp": false,
1577
- "multiple": false,
1638
+ "multiple": true,
1578
1639
  "type": "option"
1579
1640
  },
1580
1641
  "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.",
1587
- "exclusive": [
1588
- "manifest",
1589
- "metadata"
1590
- ],
1642
+ "helpGroup": "Metadata API Format",
1591
1643
  "name": "metadata-dir",
1592
- "summary": "Root of directory or zip file of metadata formatted files to convert.",
1593
- "delimiter": ",",
1644
+ "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1594
1645
  "hasDynamicHelp": false,
1595
- "multiple": true,
1646
+ "multiple": false,
1596
1647
  "type": "option"
1597
1648
  },
1598
- "metadata": {
1599
- "char": "m",
1600
- "exclusive": [
1601
- "manifest",
1602
- "metadatapath"
1649
+ "single-package": {
1650
+ "dependsOn": [
1651
+ "metadata-dir"
1603
1652
  ],
1604
- "name": "metadata",
1605
- "summary": "Metadata component names to convert.",
1606
- "delimiter": ",",
1607
- "hasDynamicHelp": false,
1608
- "multiple": true,
1609
- "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",
1653
+ "helpGroup": "Metadata API Format",
1654
+ "name": "single-package",
1655
+ "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
1661
1656
  "allowNo": false,
1662
1657
  "type": "boolean"
1663
1658
  },
1664
- "flags-dir": {
1665
- "helpGroup": "GLOBAL",
1666
- "name": "flags-dir",
1667
- "summary": "Import flag values from a directory.",
1668
- "hasDynamicHelp": false,
1659
+ "target-org": {
1660
+ "char": "o",
1661
+ "name": "target-org",
1662
+ "noCacheDefault": true,
1663
+ "required": true,
1664
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1665
+ "hasDynamicHelp": true,
1669
1666
  "multiple": false,
1670
1667
  "type": "option"
1671
1668
  },
1672
- "behavior": {
1673
- "char": "b",
1674
- "name": "behavior",
1675
- "required": true,
1676
- "summary": "Behavior to enable; the values correspond to the possible values of the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file.",
1669
+ "tests": {
1670
+ "char": "t",
1671
+ "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\"",
1672
+ "helpGroup": "Test",
1673
+ "name": "tests",
1674
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
1675
+ "hasDynamicHelp": false,
1676
+ "multiple": true,
1677
+ "type": "option"
1678
+ },
1679
+ "test-level": {
1680
+ "char": "l",
1681
+ "description": "Valid values are:\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.",
1682
+ "helpGroup": "Test",
1683
+ "name": "test-level",
1684
+ "summary": "Deployment Apex testing level.",
1685
+ "default": "RunLocalTests",
1677
1686
  "hasDynamicHelp": false,
1678
1687
  "multiple": false,
1679
1688
  "options": [
1680
- "decomposeCustomLabelsBeta2",
1681
- "decomposeCustomLabelsBeta",
1682
- "decomposePermissionSetBeta",
1683
- "decomposePermissionSetBeta2",
1684
- "decomposeSharingRulesBeta",
1685
- "decomposeWorkflowBeta",
1686
- "decomposeExternalServiceRegistrationBeta"
1689
+ "RunAllTestsInOrg",
1690
+ "RunLocalTests",
1691
+ "RunSpecifiedTests"
1687
1692
  ],
1688
1693
  "type": "option"
1689
1694
  },
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.",
1695
+ "verbose": {
1696
+ "exclusive": [
1697
+ "concise"
1698
+ ],
1699
+ "name": "verbose",
1700
+ "summary": "Show verbose output of the validation result.",
1699
1701
  "allowNo": false,
1700
1702
  "type": "boolean"
1701
1703
  },
1702
- "target-org": {
1703
- "char": "o",
1704
- "name": "target-org",
1705
- "noCacheDefault": true,
1706
- "summary": "Username or alias of the target org.",
1704
+ "wait": {
1705
+ "char": "w",
1706
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
1707
+ "name": "wait",
1708
+ "summary": "Number of minutes to wait for the command to complete and display results.",
1707
1709
  "hasDynamicHelp": true,
1710
+ "helpValue": "<minutes>",
1708
1711
  "multiple": false,
1709
1712
  "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"
1730
- ],
1731
- "aliasPermutations": [],
1732
- "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"
1739
- ]
1740
- },
1741
- "project:convert:source": {
1742
- "aliases": [
1743
- "force:source:convert"
1744
- ],
1745
- "args": {},
1746
- "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.",
1748
- "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'"
1751
- ],
1752
- "flags": {
1753
- "json": {
1754
- "description": "Format output as json.",
1755
- "helpGroup": "GLOBAL",
1756
- "name": "json",
1713
+ },
1714
+ "ignore-warnings": {
1715
+ "char": "g",
1716
+ "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
1717
+ "name": "ignore-warnings",
1718
+ "summary": "Ignore warnings and allow a deployment to complete successfully.",
1757
1719
  "allowNo": false,
1758
1720
  "type": "boolean"
1759
1721
  },
1760
- "flags-dir": {
1761
- "helpGroup": "GLOBAL",
1762
- "name": "flags-dir",
1763
- "summary": "Import flag values from a directory.",
1722
+ "coverage-formatters": {
1723
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1724
+ "helpGroup": "Test",
1725
+ "name": "coverage-formatters",
1726
+ "summary": "Format of the code coverage results.",
1764
1727
  "hasDynamicHelp": false,
1765
- "multiple": false,
1766
- "type": "option"
1767
- },
1768
- "api-version": {
1769
- "aliases": [
1770
- "apiversion"
1728
+ "multiple": true,
1729
+ "options": [
1730
+ "clover",
1731
+ "cobertura",
1732
+ "html-spa",
1733
+ "html",
1734
+ "json",
1735
+ "json-summary",
1736
+ "lcovonly",
1737
+ "none",
1738
+ "teamcity",
1739
+ "text",
1740
+ "text-summary"
1771
1741
  ],
1772
- "deprecateAliases": true,
1773
- "description": "Override the api version used for api requests made by this command",
1774
- "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",
1776
- "hasDynamicHelp": false,
1777
- "multiple": false,
1778
1742
  "type": "option"
1779
1743
  },
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",
1786
- "hasDynamicHelp": false,
1787
- "multiple": false,
1788
- "type": "option"
1744
+ "junit": {
1745
+ "helpGroup": "Test",
1746
+ "name": "junit",
1747
+ "summary": "Output JUnit test results.",
1748
+ "allowNo": false,
1749
+ "type": "boolean"
1789
1750
  },
1790
- "root-dir": {
1791
- "aliases": [
1792
- "rootdir"
1751
+ "results-dir": {
1752
+ "helpGroup": "Test",
1753
+ "name": "results-dir",
1754
+ "relationships": [
1755
+ {
1756
+ "type": "some",
1757
+ "flags": [
1758
+ "coverage-formatters",
1759
+ "junit"
1760
+ ]
1761
+ }
1793
1762
  ],
1794
- "char": "r",
1795
- "deprecateAliases": true,
1796
- "name": "root-dir",
1797
- "summary": "Source directory other than the default package to convert.",
1763
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1798
1764
  "hasDynamicHelp": false,
1799
1765
  "multiple": false,
1800
1766
  "type": "option"
1801
1767
  },
1802
- "output-dir": {
1803
- "aliases": [
1804
- "outputdir"
1768
+ "purge-on-delete": {
1769
+ "dependsOn": [
1770
+ "manifest"
1805
1771
  ],
1806
- "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"
1772
+ "helpGroup": "Delete",
1773
+ "name": "purge-on-delete",
1774
+ "relationships": [
1775
+ {
1776
+ "type": "some",
1777
+ "flags": [
1778
+ "pre-destructive-changes",
1779
+ "post-destructive-changes"
1780
+ ]
1781
+ }
1818
1782
  ],
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"
1783
+ "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
1784
+ "allowNo": false,
1785
+ "type": "boolean"
1835
1786
  },
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"
1787
+ "pre-destructive-changes": {
1788
+ "dependsOn": [
1789
+ "manifest"
1846
1790
  ],
1847
- "name": "source-dir",
1848
- "summary": "Paths to the local source files to convert.",
1849
- "delimiter": ",",
1791
+ "helpGroup": "Delete",
1792
+ "name": "pre-destructive-changes",
1793
+ "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy",
1850
1794
  "hasDynamicHelp": false,
1851
- "multiple": true,
1795
+ "multiple": false,
1852
1796
  "type": "option"
1853
1797
  },
1854
- "metadata": {
1855
- "char": "m",
1856
- "exclusive": [
1857
- "manifest",
1858
- "sourcepath"
1798
+ "post-destructive-changes": {
1799
+ "dependsOn": [
1800
+ "manifest"
1859
1801
  ],
1860
- "name": "metadata",
1861
- "summary": "Metadata component names to convert.",
1862
- "delimiter": ",",
1802
+ "helpGroup": "Delete",
1803
+ "name": "post-destructive-changes",
1804
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1863
1805
  "hasDynamicHelp": false,
1864
- "multiple": true,
1806
+ "multiple": false,
1865
1807
  "type": "option"
1866
1808
  }
1867
1809
  },
1868
1810
  "hasDynamicHelp": true,
1869
1811
  "hiddenAliases": [],
1870
- "id": "project:convert:source",
1812
+ "id": "project:deploy:validate",
1871
1813
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1872
1814
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1873
1815
  "pluginType": "core",
1874
1816
  "strict": true,
1875
- "summary": "Convert source-formatted files into metadata that you can deploy using Metadata API.",
1817
+ "summary": "Validate a metadata deployment without actually executing it.",
1876
1818
  "enableJsonFlag": true,
1877
- "requiresProject": true,
1819
+ "configurationVariablesSection": {
1820
+ "header": "CONFIGURATION VARIABLES",
1821
+ "body": [
1822
+ {
1823
+ "name": "target-org",
1824
+ "description": "Username or alias of the org that all commands run against by default. (sf only)"
1825
+ },
1826
+ {
1827
+ "name": "org-api-version",
1828
+ "description": "API version of your project. Default: API version of your Dev Hub org."
1829
+ }
1830
+ ]
1831
+ },
1832
+ "envVariablesSection": {
1833
+ "header": "ENVIRONMENT VARIABLES",
1834
+ "body": [
1835
+ {
1836
+ "name": "SF_TARGET_ORG",
1837
+ "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1838
+ },
1839
+ {
1840
+ "name": "SF_USE_PROGRESS_BAR",
1841
+ "description": "Set to false to disable the progress bar when running the metadata deploy command."
1842
+ }
1843
+ ]
1844
+ },
1845
+ "errorCodes": {
1846
+ "header": "ERROR CODES",
1847
+ "body": [
1848
+ {
1849
+ "name": "Succeeded (0)",
1850
+ "description": "The deploy succeeded."
1851
+ },
1852
+ {
1853
+ "name": "Canceled (1)",
1854
+ "description": "The deploy was canceled."
1855
+ },
1856
+ {
1857
+ "name": "Failed (1)",
1858
+ "description": "The deploy failed."
1859
+ },
1860
+ {
1861
+ "name": "SucceededPartial (68)",
1862
+ "description": "The deploy partially succeeded."
1863
+ },
1864
+ {
1865
+ "name": "InProgress (69)",
1866
+ "description": "The deploy is in progress."
1867
+ },
1868
+ {
1869
+ "name": "Pending (69)",
1870
+ "description": "The deploy is pending."
1871
+ },
1872
+ {
1873
+ "name": "Canceling (69)",
1874
+ "description": "The deploy is being canceled."
1875
+ }
1876
+ ]
1877
+ },
1878
1878
  "isESM": true,
1879
1879
  "relativePath": [
1880
1880
  "lib",
1881
1881
  "commands",
1882
1882
  "project",
1883
- "convert",
1884
- "source.js"
1883
+ "deploy",
1884
+ "validate.js"
1885
1885
  ],
1886
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"
1887
+ "deploy:metadata:validate",
1888
+ "metadata:deploy:validate",
1889
+ "metadata:validate:deploy",
1890
+ "deploy:validate:metadata",
1891
+ "validate:deploy:metadata",
1892
+ "validate:metadata:deploy"
1893
1893
  ],
1894
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"
1895
+ "project:deploy:validate",
1896
+ "deploy:project:validate",
1897
+ "deploy:validate:project",
1898
+ "project:validate:deploy",
1899
+ "validate:project:deploy",
1900
+ "validate:deploy:project"
1901
1901
  ]
1902
1902
  },
1903
1903
  "project:delete:source": {
@@ -3051,5 +3051,5 @@
3051
3051
  ]
3052
3052
  }
3053
3053
  },
3054
- "version": "3.22.11"
3054
+ "version": "3.22.12"
3055
3055
  }