cumulusci-plus 5.0.23__py3-none-any.whl → 5.0.25__py3-none-any.whl
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.
Potentially problematic release.
This version of cumulusci-plus might be problematic. Click here for more details.
- cumulusci/__about__.py +1 -1
- cumulusci/cli/task.py +17 -0
- cumulusci/cli/tests/test_flow.py +279 -2
- cumulusci/cli/tests/test_task.py +88 -2
- cumulusci/core/flowrunner.py +86 -6
- cumulusci/cumulusci.yml +24 -0
- cumulusci/tasks/create_package_version.py +14 -6
- cumulusci/tasks/salesforce/SfPackageCommands.py +363 -0
- cumulusci/tasks/salesforce/getPackageVersion.py +89 -0
- cumulusci/tasks/salesforce/tests/test_SfPackageCommands.py +554 -0
- cumulusci/tasks/salesforce/tests/test_getPackageVersion.py +651 -0
- cumulusci/tasks/salesforce/tests/test_update_external_credential.py +912 -0
- cumulusci/tasks/salesforce/tests/test_update_named_credential.py +1042 -0
- cumulusci/tasks/salesforce/update_external_credential.py +562 -0
- cumulusci/tasks/salesforce/update_named_credential.py +441 -0
- cumulusci/tasks/salesforce/users/permsets.py +63 -2
- cumulusci/tasks/salesforce/users/tests/test_permsets.py +184 -0
- cumulusci/tasks/sfdmu/__init__.py +0 -0
- cumulusci/tasks/sfdmu/sfdmu.py +256 -0
- cumulusci/tasks/sfdmu/tests/__init__.py +1 -0
- cumulusci/tasks/sfdmu/tests/test_runner.py +212 -0
- cumulusci/tasks/sfdmu/tests/test_sfdmu.py +443 -0
- cumulusci/utils/__init__.py +24 -2
- {cumulusci_plus-5.0.23.dist-info → cumulusci_plus-5.0.25.dist-info}/METADATA +7 -5
- {cumulusci_plus-5.0.23.dist-info → cumulusci_plus-5.0.25.dist-info}/RECORD +29 -16
- {cumulusci_plus-5.0.23.dist-info → cumulusci_plus-5.0.25.dist-info}/WHEEL +0 -0
- {cumulusci_plus-5.0.23.dist-info → cumulusci_plus-5.0.25.dist-info}/entry_points.txt +0 -0
- {cumulusci_plus-5.0.23.dist-info → cumulusci_plus-5.0.25.dist-info}/licenses/AUTHORS.rst +0 -0
- {cumulusci_plus-5.0.23.dist-info → cumulusci_plus-5.0.25.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import json
|
|
2
|
+
|
|
3
|
+
import sarge
|
|
4
|
+
|
|
5
|
+
from cumulusci.core.config.util import get_devhub_config
|
|
6
|
+
from cumulusci.core.exceptions import SalesforceDXException
|
|
7
|
+
from cumulusci.core.sfdx import sfdx
|
|
8
|
+
from cumulusci.tasks.salesforce import BaseSalesforceApiTask
|
|
9
|
+
from cumulusci.utils.options import CCIOptions, Field
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SfPackageCommands(BaseSalesforceApiTask):
|
|
13
|
+
class Options(CCIOptions):
|
|
14
|
+
json_output: bool = Field(
|
|
15
|
+
None, description="Whether to return the result as a JSON object"
|
|
16
|
+
)
|
|
17
|
+
api_version: str = Field(None, description="API version to use for the command")
|
|
18
|
+
flags_dir: str = Field(None, description="Import flag values from a directory")
|
|
19
|
+
|
|
20
|
+
parsed_options: Options
|
|
21
|
+
|
|
22
|
+
def _init_task(self):
|
|
23
|
+
super()._init_task()
|
|
24
|
+
|
|
25
|
+
def _init_options(self, kwargs):
|
|
26
|
+
self.args = []
|
|
27
|
+
self.package_command = "package "
|
|
28
|
+
super()._init_options(kwargs)
|
|
29
|
+
if self.parsed_options.flags_dir:
|
|
30
|
+
self.args.extend(["--flags-dir", self.parsed_options.flags_dir])
|
|
31
|
+
if self.parsed_options.json_output:
|
|
32
|
+
self.args.extend(["--json"])
|
|
33
|
+
if self.parsed_options.api_version:
|
|
34
|
+
self.args.extend(["--api-version", self.parsed_options.api_version])
|
|
35
|
+
|
|
36
|
+
devHubConfig = get_devhub_config(self.project_config)
|
|
37
|
+
self.args.extend(["--target-dev-hub", devHubConfig.username])
|
|
38
|
+
|
|
39
|
+
def _run_task(self):
|
|
40
|
+
self.return_values = {}
|
|
41
|
+
|
|
42
|
+
self.p: sarge.Command = sfdx(
|
|
43
|
+
self.package_command,
|
|
44
|
+
log_note="Running package command",
|
|
45
|
+
args=self.args,
|
|
46
|
+
check_return=True,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
if self.parsed_options.json_output:
|
|
50
|
+
self.return_values = self._load_json_output(self.p)
|
|
51
|
+
|
|
52
|
+
for line in self.p.stdout_text:
|
|
53
|
+
self.logger.info(line)
|
|
54
|
+
|
|
55
|
+
for line in self.p.stderr_text:
|
|
56
|
+
self.logger.error(line)
|
|
57
|
+
|
|
58
|
+
def _load_json_output(self, p: sarge.Command, stdout: str = None):
|
|
59
|
+
try:
|
|
60
|
+
stdout = stdout or p.stdout_text.read()
|
|
61
|
+
return json.loads(stdout)
|
|
62
|
+
except json.decoder.JSONDecodeError:
|
|
63
|
+
raise SalesforceDXException(
|
|
64
|
+
f"Failed to parse the output of the {self.package_command} command"
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class PackageVersionUpdateTask(SfPackageCommands):
|
|
69
|
+
class Options(SfPackageCommands.Options):
|
|
70
|
+
package_id: str = Field(
|
|
71
|
+
..., description="Package ID (04t..) or alias to update"
|
|
72
|
+
)
|
|
73
|
+
version_name: str = Field(None, description="New package version name")
|
|
74
|
+
version_description: str = Field(
|
|
75
|
+
None, description="New package version description"
|
|
76
|
+
)
|
|
77
|
+
branch: str = Field(None, description="New package version branch")
|
|
78
|
+
tag: str = Field(None, description="New package version tag")
|
|
79
|
+
installation_key: str = Field(
|
|
80
|
+
None, description="New installation key for key-protected package"
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
def _init_task(self):
|
|
84
|
+
super()._init_task()
|
|
85
|
+
self.package_command += "version update"
|
|
86
|
+
|
|
87
|
+
def _init_options(self, kwargs):
|
|
88
|
+
super()._init_options(kwargs)
|
|
89
|
+
if self.parsed_options.package_id:
|
|
90
|
+
self.args.extend(["--package", self.parsed_options.package_id])
|
|
91
|
+
if self.parsed_options.version_name:
|
|
92
|
+
self.args.extend(["--version-name", self.parsed_options.version_name])
|
|
93
|
+
if self.parsed_options.version_description:
|
|
94
|
+
self.args.extend(
|
|
95
|
+
["--version-description", self.parsed_options.version_description]
|
|
96
|
+
)
|
|
97
|
+
if self.parsed_options.branch:
|
|
98
|
+
self.args.extend(["--branch", self.parsed_options.branch])
|
|
99
|
+
if self.parsed_options.tag:
|
|
100
|
+
self.args.extend(["--tag", self.parsed_options.tag])
|
|
101
|
+
if self.parsed_options.installation_key:
|
|
102
|
+
self.args.extend(
|
|
103
|
+
["--installation-key", self.parsed_options.installation_key]
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
def _run_task(self):
|
|
107
|
+
super()._run_task()
|
|
108
|
+
|
|
109
|
+
if self.parsed_options.json_output:
|
|
110
|
+
self.logger.info(self.return_values)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class PackageVersionCreateTask(SfPackageCommands):
|
|
114
|
+
class Options(SfPackageCommands.Options):
|
|
115
|
+
package_id: str = Field(
|
|
116
|
+
..., description="Package ID or alias to create version for"
|
|
117
|
+
)
|
|
118
|
+
version_name: str = Field(None, description="Package version name")
|
|
119
|
+
version_description: str = Field(
|
|
120
|
+
None, description="Package version description"
|
|
121
|
+
)
|
|
122
|
+
branch: str = Field(None, description="Package version branch")
|
|
123
|
+
tag: str = Field(None, description="Package version tag")
|
|
124
|
+
installation_key: str = Field(
|
|
125
|
+
None, description="Installation key for key-protected package"
|
|
126
|
+
)
|
|
127
|
+
wait: int = Field(
|
|
128
|
+
None, description="Number of minutes to wait for the command to complete"
|
|
129
|
+
)
|
|
130
|
+
code_coverage: bool = Field(
|
|
131
|
+
None, description="Calculate code coverage for the package version"
|
|
132
|
+
)
|
|
133
|
+
skip_validation: bool = Field(
|
|
134
|
+
None, description="Skip validation of the package version"
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
def _init_task(self):
|
|
138
|
+
super()._init_task()
|
|
139
|
+
self.package_command += "version create"
|
|
140
|
+
|
|
141
|
+
def _init_options(self, kwargs):
|
|
142
|
+
super()._init_options(kwargs)
|
|
143
|
+
if self.parsed_options.package_id:
|
|
144
|
+
self.args.extend(["--package", self.parsed_options.package_id])
|
|
145
|
+
if self.parsed_options.version_name:
|
|
146
|
+
self.args.extend(["--version-name", self.parsed_options.version_name])
|
|
147
|
+
if self.parsed_options.version_description:
|
|
148
|
+
self.args.extend(
|
|
149
|
+
["--version-description", self.parsed_options.version_description]
|
|
150
|
+
)
|
|
151
|
+
if self.parsed_options.branch:
|
|
152
|
+
self.args.extend(["--branch", self.parsed_options.branch])
|
|
153
|
+
if self.parsed_options.tag:
|
|
154
|
+
self.args.extend(["--tag", self.parsed_options.tag])
|
|
155
|
+
if self.parsed_options.installation_key:
|
|
156
|
+
self.args.extend(
|
|
157
|
+
["--installation-key", self.parsed_options.installation_key]
|
|
158
|
+
)
|
|
159
|
+
if self.parsed_options.wait:
|
|
160
|
+
self.args.extend(["--wait", str(self.parsed_options.wait)])
|
|
161
|
+
if self.parsed_options.code_coverage:
|
|
162
|
+
self.args.extend(["--code-coverage", self.parsed_options.code_coverage])
|
|
163
|
+
if self.parsed_options.skip_validation:
|
|
164
|
+
self.args.extend(["--skip-validation", self.parsed_options.skip_validation])
|
|
165
|
+
|
|
166
|
+
def _run_task(self):
|
|
167
|
+
super()._run_task()
|
|
168
|
+
|
|
169
|
+
if self.parsed_options.json_output:
|
|
170
|
+
self.logger.info(self.return_values)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class PackageVersionListTask(SfPackageCommands):
|
|
174
|
+
class Options(SfPackageCommands.Options):
|
|
175
|
+
package_id: str = Field(
|
|
176
|
+
None, description="Package ID or alias to list versions for"
|
|
177
|
+
)
|
|
178
|
+
status: str = Field(
|
|
179
|
+
None,
|
|
180
|
+
description="Filter by package version status (Success, Error, InProgress, Queued)",
|
|
181
|
+
)
|
|
182
|
+
modified: bool = Field(None, description="Show only modified package versions")
|
|
183
|
+
concise: bool = Field(
|
|
184
|
+
None,
|
|
185
|
+
description="Show only the package version ID, version number, and status",
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
def _init_task(self):
|
|
189
|
+
super()._init_task()
|
|
190
|
+
self.package_command += "version list"
|
|
191
|
+
|
|
192
|
+
def _init_options(self, kwargs):
|
|
193
|
+
super()._init_options(kwargs)
|
|
194
|
+
if self.parsed_options.package_id:
|
|
195
|
+
self.args.extend(["--package", self.parsed_options.package_id])
|
|
196
|
+
if self.parsed_options.status:
|
|
197
|
+
self.args.extend(["--status", self.parsed_options.status])
|
|
198
|
+
if self.parsed_options.modified:
|
|
199
|
+
self.args.extend(["--modified", self.parsed_options.modified])
|
|
200
|
+
if self.parsed_options.concise:
|
|
201
|
+
self.args.extend(["--concise", self.parsed_options.concise])
|
|
202
|
+
|
|
203
|
+
def _run_task(self):
|
|
204
|
+
super()._run_task()
|
|
205
|
+
|
|
206
|
+
if self.parsed_options.json_output:
|
|
207
|
+
self.logger.info(self.return_values)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class PackageVersionDisplayTask(SfPackageCommands):
|
|
211
|
+
class Options(SfPackageCommands.Options):
|
|
212
|
+
package_version_id: str = Field(
|
|
213
|
+
..., description="Package version ID to display"
|
|
214
|
+
)
|
|
215
|
+
verbose: bool = Field(None, description="Show verbose output")
|
|
216
|
+
|
|
217
|
+
def _init_task(self):
|
|
218
|
+
super()._init_task()
|
|
219
|
+
self.package_command += "version display"
|
|
220
|
+
|
|
221
|
+
def _init_options(self, kwargs):
|
|
222
|
+
super()._init_options(kwargs)
|
|
223
|
+
if self.parsed_options.package_version_id:
|
|
224
|
+
self.args.extend(
|
|
225
|
+
["--package-version-id", self.parsed_options.package_version_id]
|
|
226
|
+
)
|
|
227
|
+
if self.parsed_options.verbose:
|
|
228
|
+
self.args.extend(["--verbose", self.parsed_options.verbose])
|
|
229
|
+
|
|
230
|
+
def _run_task(self):
|
|
231
|
+
super()._run_task()
|
|
232
|
+
|
|
233
|
+
if self.parsed_options.json_output:
|
|
234
|
+
self.logger.info(self.return_values)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
class PackageVersionDeleteTask(SfPackageCommands):
|
|
238
|
+
class Options(SfPackageCommands.Options):
|
|
239
|
+
package_version_id: str = Field(..., description="Package version ID to delete")
|
|
240
|
+
no_prompt_flag: bool = Field(None, description="Don't prompt for confirmation")
|
|
241
|
+
|
|
242
|
+
def _init_task(self):
|
|
243
|
+
super()._init_task()
|
|
244
|
+
self.package_command += "version delete"
|
|
245
|
+
|
|
246
|
+
def _init_options(self, kwargs):
|
|
247
|
+
super()._init_options(kwargs)
|
|
248
|
+
if self.parsed_options.package_version_id:
|
|
249
|
+
self.args.extend(
|
|
250
|
+
["--package-version-id", self.parsed_options.package_version_id]
|
|
251
|
+
)
|
|
252
|
+
if self.parsed_options.no_prompt_flag:
|
|
253
|
+
self.args.extend(["--no-prompt", self.parsed_options.no_prompt_flag])
|
|
254
|
+
|
|
255
|
+
def _run_task(self):
|
|
256
|
+
super()._run_task()
|
|
257
|
+
|
|
258
|
+
if self.parsed_options.json_output:
|
|
259
|
+
self.logger.info(self.return_values)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
class PackageVersionReportTask(SfPackageCommands):
|
|
263
|
+
class Options(SfPackageCommands.Options):
|
|
264
|
+
package_version_id: str = Field(
|
|
265
|
+
..., description="Package version ID to generate report for"
|
|
266
|
+
)
|
|
267
|
+
code_coverage: bool = Field(None, description="Generate code coverage report")
|
|
268
|
+
output_dir: str = Field(None, description="Directory to save the report")
|
|
269
|
+
|
|
270
|
+
def _init_task(self):
|
|
271
|
+
super()._init_task()
|
|
272
|
+
self.package_command += "version report"
|
|
273
|
+
|
|
274
|
+
def _init_options(self, kwargs):
|
|
275
|
+
super()._init_options(kwargs)
|
|
276
|
+
if self.parsed_options.package_version_id:
|
|
277
|
+
self.args.extend(
|
|
278
|
+
["--package-version-id", self.parsed_options.package_version_id]
|
|
279
|
+
)
|
|
280
|
+
if self.parsed_options.code_coverage:
|
|
281
|
+
self.args.extend(["--code-coverage", self.parsed_options.code_coverage])
|
|
282
|
+
if self.parsed_options.output_dir:
|
|
283
|
+
self.args.extend(["--output-dir", self.parsed_options.output_dir])
|
|
284
|
+
|
|
285
|
+
def _run_task(self):
|
|
286
|
+
super()._run_task()
|
|
287
|
+
|
|
288
|
+
if self.parsed_options.json_output:
|
|
289
|
+
self.logger.info(self.return_values)
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
class PackageCreateTask(SfPackageCommands):
|
|
293
|
+
class Options(SfPackageCommands.Options):
|
|
294
|
+
name: str = Field(..., description="Package name")
|
|
295
|
+
description: str = Field(None, description="Package description")
|
|
296
|
+
package_type: str = Field(None, description="Package type (Managed, Unlocked)")
|
|
297
|
+
path: str = Field(None, description="Path to the package directory")
|
|
298
|
+
|
|
299
|
+
def _init_task(self):
|
|
300
|
+
super()._init_task()
|
|
301
|
+
self.package_command += "create"
|
|
302
|
+
|
|
303
|
+
def _init_options(self, kwargs):
|
|
304
|
+
super()._init_options(kwargs)
|
|
305
|
+
if self.parsed_options.name:
|
|
306
|
+
self.args.extend(["--name", self.parsed_options.name])
|
|
307
|
+
if self.parsed_options.description:
|
|
308
|
+
self.args.extend(["--description", self.parsed_options.description])
|
|
309
|
+
if self.parsed_options.package_type:
|
|
310
|
+
self.args.extend(["--package-type", self.parsed_options.package_type])
|
|
311
|
+
if self.parsed_options.path:
|
|
312
|
+
self.args.extend(["--path", self.parsed_options.path])
|
|
313
|
+
|
|
314
|
+
def _run_task(self):
|
|
315
|
+
super()._run_task()
|
|
316
|
+
|
|
317
|
+
if self.parsed_options.json_output:
|
|
318
|
+
self.logger.info(self.return_values)
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
class PackageListTask(SfPackageCommands):
|
|
322
|
+
class Options(SfPackageCommands.Options):
|
|
323
|
+
concise: bool = Field(
|
|
324
|
+
None, description="Show only the package ID, name, and type"
|
|
325
|
+
)
|
|
326
|
+
|
|
327
|
+
def _init_task(self):
|
|
328
|
+
super()._init_task()
|
|
329
|
+
self.package_command += "list"
|
|
330
|
+
|
|
331
|
+
def _init_options(self, kwargs):
|
|
332
|
+
super()._init_options(kwargs)
|
|
333
|
+
if self.parsed_options.concise:
|
|
334
|
+
self.args.extend(["--concise", self.parsed_options.concise])
|
|
335
|
+
|
|
336
|
+
def _run_task(self):
|
|
337
|
+
super()._run_task()
|
|
338
|
+
|
|
339
|
+
if self.parsed_options.json_output:
|
|
340
|
+
self.logger.info(self.return_values)
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
class PackageDisplayTask(SfPackageCommands):
|
|
344
|
+
class Options(SfPackageCommands.Options):
|
|
345
|
+
package_id: str = Field(..., description="Package ID or alias to display")
|
|
346
|
+
verbose: bool = Field(None, description="Show verbose output")
|
|
347
|
+
|
|
348
|
+
def _init_task(self):
|
|
349
|
+
super()._init_task()
|
|
350
|
+
self.package_command += "display"
|
|
351
|
+
|
|
352
|
+
def _init_options(self, kwargs):
|
|
353
|
+
super()._init_options(kwargs)
|
|
354
|
+
if self.parsed_options.package_id:
|
|
355
|
+
self.args.extend(["--package-id", self.parsed_options.package_id])
|
|
356
|
+
if self.parsed_options.verbose:
|
|
357
|
+
self.args.extend(["--verbose", self.parsed_options.verbose])
|
|
358
|
+
|
|
359
|
+
def _run_task(self):
|
|
360
|
+
super()._run_task()
|
|
361
|
+
|
|
362
|
+
if self.parsed_options.json_output:
|
|
363
|
+
self.logger.info(self.return_values)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
from cumulusci.core.config.util import get_devhub_config
|
|
2
|
+
from cumulusci.core.exceptions import SalesforceDXException
|
|
3
|
+
from cumulusci.core.tasks import BaseTask
|
|
4
|
+
from cumulusci.core.versions import PackageType, PackageVersionNumber
|
|
5
|
+
from cumulusci.salesforce_api.utils import get_simple_salesforce_connection
|
|
6
|
+
from cumulusci.utils.options import CCIOptions, Field
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class GetPackageVersion(BaseTask):
|
|
10
|
+
"""Custom task to get package version ID"""
|
|
11
|
+
|
|
12
|
+
class Options(CCIOptions):
|
|
13
|
+
package_name: str = Field(
|
|
14
|
+
..., description="Package name to get package version ID for."
|
|
15
|
+
)
|
|
16
|
+
package_version: str = Field(
|
|
17
|
+
..., description="Package version to get package version ID for."
|
|
18
|
+
)
|
|
19
|
+
prefix: str = Field(
|
|
20
|
+
"",
|
|
21
|
+
description="Prefix to add to the package name.",
|
|
22
|
+
)
|
|
23
|
+
suffix: str = Field(
|
|
24
|
+
"",
|
|
25
|
+
description="Suffix to add to the package name.",
|
|
26
|
+
)
|
|
27
|
+
fail_on_error: bool = Field(
|
|
28
|
+
False, description="Fail on error. [default to False]"
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
parsed_options: Options
|
|
32
|
+
|
|
33
|
+
def _init_options(self, kwargs):
|
|
34
|
+
super()._init_options(kwargs)
|
|
35
|
+
self.parsed_options.package_version = PackageVersionNumber.parse(
|
|
36
|
+
self.parsed_options.package_version, package_type=PackageType.SECOND_GEN
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
def _init_task(self):
|
|
40
|
+
self.tooling = get_simple_salesforce_connection(
|
|
41
|
+
self.project_config,
|
|
42
|
+
get_devhub_config(self.project_config),
|
|
43
|
+
api_version=self.project_config.project__package__api_version,
|
|
44
|
+
base_url="tooling",
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
def _run_task(self):
|
|
48
|
+
package_name = f"{self.parsed_options.prefix}{self.parsed_options.package_name}{self.parsed_options.suffix}".strip()
|
|
49
|
+
|
|
50
|
+
query = (
|
|
51
|
+
f"SELECT Id, SubscriberPackageVersionId FROM Package2Version WHERE Package2.Name='{package_name}' AND "
|
|
52
|
+
f"MajorVersion={self.parsed_options.package_version.MajorVersion} AND "
|
|
53
|
+
f"MinorVersion={self.parsed_options.package_version.MinorVersion} AND "
|
|
54
|
+
f"PatchVersion={self.parsed_options.package_version.PatchVersion} AND "
|
|
55
|
+
f"BuildNumber={self.parsed_options.package_version.BuildNumber}"
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
res = self.tooling.query(query)
|
|
59
|
+
if res["size"] == 0:
|
|
60
|
+
msg = f"Package version {package_name} {self.parsed_options.package_version} not found"
|
|
61
|
+
self.logger.warning(msg)
|
|
62
|
+
if self.parsed_options.fail_on_error:
|
|
63
|
+
raise SalesforceDXException(msg)
|
|
64
|
+
return
|
|
65
|
+
|
|
66
|
+
if res["size"] > 1:
|
|
67
|
+
msg = f"Multiple package versions found for {package_name} {self.parsed_options.package_version}"
|
|
68
|
+
self.logger.warning(msg)
|
|
69
|
+
if self.parsed_options.fail_on_error:
|
|
70
|
+
raise SalesforceDXException(msg)
|
|
71
|
+
|
|
72
|
+
self.return_values["package_version_id"] = res["records"][0]["Id"]
|
|
73
|
+
self.return_values["subscriber_package_version_id"] = res["records"][0][
|
|
74
|
+
"SubscriberPackageVersionId"
|
|
75
|
+
]
|
|
76
|
+
self.return_values["package_name"] = package_name
|
|
77
|
+
self.return_values["package_version"] = self.parsed_options.package_version
|
|
78
|
+
|
|
79
|
+
self.logger.info(
|
|
80
|
+
f"Package version {package_name} {self.parsed_options.package_version} found"
|
|
81
|
+
)
|
|
82
|
+
self.logger.info(
|
|
83
|
+
f"Package version id: {self.return_values['package_version_id']}"
|
|
84
|
+
)
|
|
85
|
+
self.logger.info(
|
|
86
|
+
f"SubscriberPackageVersion Id: {self.return_values['subscriber_package_version_id']}"
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
return self.return_values
|