cumulusci-plus 5.0.21__py3-none-any.whl → 5.0.22__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/cumulusci.yml +8 -0
- cumulusci/tasks/salesforce/update_dependencies.py +2 -2
- cumulusci/tasks/tests/test_util.py +41 -0
- cumulusci/tasks/util.py +37 -1
- {cumulusci_plus-5.0.21.dist-info → cumulusci_plus-5.0.22.dist-info}/METADATA +7 -4
- {cumulusci_plus-5.0.21.dist-info → cumulusci_plus-5.0.22.dist-info}/RECORD +11 -11
- {cumulusci_plus-5.0.21.dist-info → cumulusci_plus-5.0.22.dist-info}/WHEEL +0 -0
- {cumulusci_plus-5.0.21.dist-info → cumulusci_plus-5.0.22.dist-info}/entry_points.txt +0 -0
- {cumulusci_plus-5.0.21.dist-info → cumulusci_plus-5.0.22.dist-info}/licenses/AUTHORS.rst +0 -0
- {cumulusci_plus-5.0.21.dist-info → cumulusci_plus-5.0.22.dist-info}/licenses/LICENSE +0 -0
cumulusci/__about__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "5.0.
|
|
1
|
+
__version__ = "5.0.22"
|
cumulusci/cumulusci.yml
CHANGED
|
@@ -749,6 +749,14 @@ tasks:
|
|
|
749
749
|
options:
|
|
750
750
|
level: info
|
|
751
751
|
group: Utilities
|
|
752
|
+
copy_file:
|
|
753
|
+
description: "Copy a file for src to dest with environment variable support, Ex: &TMPDIR&/src resolves to /tmp/src on linux or %TMPDIR%/src on windows."
|
|
754
|
+
class_path: cumulusci.tasks.util.CopyFile
|
|
755
|
+
group: Utilities
|
|
756
|
+
load_dot_env:
|
|
757
|
+
description: "Log the contents of the .env file"
|
|
758
|
+
class_path: cumulusci.tasks.util.LoadDotEnv
|
|
759
|
+
group: Utilities
|
|
752
760
|
configure_env:
|
|
753
761
|
description: Get or set environment variables.
|
|
754
762
|
class_path: cumulusci.tasks.utility.env_management.EnvManagement
|
|
@@ -56,7 +56,7 @@ class UpdateDependencies(BaseSalesforceTask):
|
|
|
56
56
|
"description": "The name of a sequence of resolution_strategy (from project__dependency_resolutions) to apply to dynamic dependencies."
|
|
57
57
|
},
|
|
58
58
|
"packages_only": {
|
|
59
|
-
"description": "Install only packaged dependencies. Ignore all
|
|
59
|
+
"description": "Install only packaged dependencies. Ignore all unpackaged metadata. Defaults to False."
|
|
60
60
|
},
|
|
61
61
|
"interactive": {
|
|
62
62
|
"description": "If True, stop after identifying all dependencies and output the package Ids that will be installed. Defaults to False."
|
|
@@ -65,7 +65,7 @@ class UpdateDependencies(BaseSalesforceTask):
|
|
|
65
65
|
"description": "If `interactive` is set to True, display package Ids using a format string ({} will be replaced with the package Id)."
|
|
66
66
|
},
|
|
67
67
|
"force_pre_post_install": {
|
|
68
|
-
"description": "Forces the
|
|
68
|
+
"description": "Forces the dependency_flow_pre flows and dependency_flow_post flows to run even if the dependency version is already installed. Defaults to False."
|
|
69
69
|
},
|
|
70
70
|
**{k: v for k, v in PACKAGE_INSTALL_TASK_OPTIONS.items() if k != "password"},
|
|
71
71
|
}
|
|
@@ -182,6 +182,47 @@ class TestUtilTasks:
|
|
|
182
182
|
|
|
183
183
|
assert os.path.exists(dest)
|
|
184
184
|
|
|
185
|
+
@pytest.mark.skipif(os.name == "posix", reason="Only run on POSIX systems")
|
|
186
|
+
def test_CopyFileVars(self):
|
|
187
|
+
src_expanded = os.path.expandvars(os.path.join("$TMPDIR", "src"))
|
|
188
|
+
with open(src_expanded, "w"):
|
|
189
|
+
pass
|
|
190
|
+
|
|
191
|
+
src = os.path.join("&TMPDIR&", "src")
|
|
192
|
+
dest = os.path.join("&TMPDIR&", "dest")
|
|
193
|
+
|
|
194
|
+
task_config = TaskConfig({"options": {"src": src, "dest": dest}})
|
|
195
|
+
task = util.CopyFile(self.project_config, task_config, self.org_config)
|
|
196
|
+
task()
|
|
197
|
+
|
|
198
|
+
assert os.path.exists(os.path.expandvars(os.path.join("$TMPDIR", "dest")))
|
|
199
|
+
|
|
200
|
+
def test_CopyFileVars_Windows(self):
|
|
201
|
+
"""Test CopyFile environment variable replacement on Windows."""
|
|
202
|
+
with mock.patch("os.name", "nt"): # Mock Windows
|
|
203
|
+
src = os.path.join("&TMPDIR&", "src")
|
|
204
|
+
dest = os.path.join("&TMPDIR&", "dest")
|
|
205
|
+
|
|
206
|
+
task_config = TaskConfig({"options": {"src": src, "dest": dest}})
|
|
207
|
+
task = util.CopyFile(self.project_config, task_config, self.org_config)
|
|
208
|
+
|
|
209
|
+
# On Windows, &TMPDIR& should become %TMPDIR%
|
|
210
|
+
assert task.options["src"] == os.path.join("%TMPDIR%", "src")
|
|
211
|
+
assert task.options["dest"] == os.path.join("%TMPDIR%", "dest")
|
|
212
|
+
|
|
213
|
+
def test_CopyFileVars_POSIX(self):
|
|
214
|
+
"""Test CopyFile environment variable replacement on POSIX."""
|
|
215
|
+
with mock.patch("os.name", "posix"): # Mock POSIX
|
|
216
|
+
src = os.path.join("&TMPDIR&", "src")
|
|
217
|
+
dest = os.path.join("&TMPDIR&", "dest")
|
|
218
|
+
|
|
219
|
+
task_config = TaskConfig({"options": {"src": src, "dest": dest}})
|
|
220
|
+
task = util.CopyFile(self.project_config, task_config, self.org_config)
|
|
221
|
+
|
|
222
|
+
# On POSIX, &TMPDIR& should become $TMPDIR
|
|
223
|
+
assert task.options["src"] == os.path.join("$TMPDIR", "src")
|
|
224
|
+
assert task.options["dest"] == os.path.join("$TMPDIR", "dest")
|
|
225
|
+
|
|
185
226
|
def test_LogLine(self):
|
|
186
227
|
task_config = TaskConfig({"options": {"level": "debug", "line": "test"}})
|
|
187
228
|
task = util.LogLine(self.project_config, task_config, self.org_config)
|
cumulusci/tasks/util.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import glob
|
|
2
2
|
import os
|
|
3
|
+
import re
|
|
3
4
|
import shutil
|
|
4
5
|
import time
|
|
5
6
|
|
|
@@ -220,9 +221,44 @@ class CopyFile(BaseTask):
|
|
|
220
221
|
},
|
|
221
222
|
}
|
|
222
223
|
|
|
224
|
+
def _init_options(self, kwargs):
|
|
225
|
+
super(CopyFile, self)._init_options(kwargs)
|
|
226
|
+
self.options["src"] = self.replace_env_vars(self.options["src"])
|
|
227
|
+
self.options["dest"] = self.replace_env_vars(self.options["dest"])
|
|
228
|
+
|
|
223
229
|
def _run_task(self):
|
|
224
230
|
self.logger.info("Copying file {src} to {dest}".format(**self.options))
|
|
225
|
-
shutil.copyfile(
|
|
231
|
+
shutil.copyfile(
|
|
232
|
+
src=os.path.expandvars(self.options["src"]),
|
|
233
|
+
dst=os.path.expandvars(self.options["dest"]),
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
def replace_env_vars(self, text):
|
|
237
|
+
"""
|
|
238
|
+
Environment variable replacement that handles:
|
|
239
|
+
- &VAR& -> $VAR (POSIX) or %VAR% (Windows)
|
|
240
|
+
"""
|
|
241
|
+
if not text:
|
|
242
|
+
return text
|
|
243
|
+
|
|
244
|
+
pattern = r"\&([A-Za-z_][A-Za-z0-9_]*)\&"
|
|
245
|
+
if os.name == "posix":
|
|
246
|
+
# POSIX: Convert &VAR& to $VAR
|
|
247
|
+
replacement = r"$\1"
|
|
248
|
+
else:
|
|
249
|
+
# Windows: Convert &VAR$ to %VAR%
|
|
250
|
+
replacement = r"%\1%"
|
|
251
|
+
|
|
252
|
+
return re.sub(pattern, replacement, text)
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
class LoadDotEnv(BaseTask):
|
|
256
|
+
def _run_task(self):
|
|
257
|
+
from dotenv import load_dotenv
|
|
258
|
+
|
|
259
|
+
load_dotenv()
|
|
260
|
+
|
|
261
|
+
self.logger.info("Loaded .env file")
|
|
226
262
|
|
|
227
263
|
|
|
228
264
|
class LogLine(BaseTask):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cumulusci-plus
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.22
|
|
4
4
|
Summary: Build and release tools for Salesforce developers
|
|
5
5
|
Project-URL: Homepage, https://github.com/jorgesolebur/CumulusCI
|
|
6
6
|
Project-URL: Changelog, https://cumulusci.readthedocs.io/en/stable/history.html
|
|
@@ -35,6 +35,7 @@ Requires-Dist: psutil
|
|
|
35
35
|
Requires-Dist: pydantic<2
|
|
36
36
|
Requires-Dist: pyjwt
|
|
37
37
|
Requires-Dist: python-dateutil
|
|
38
|
+
Requires-Dist: python-dotenv
|
|
38
39
|
Requires-Dist: pytz
|
|
39
40
|
Requires-Dist: pyyaml
|
|
40
41
|
Requires-Dist: requests
|
|
@@ -127,7 +128,7 @@ license](https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE)
|
|
|
127
128
|
and is not covered by the Salesforce Master Subscription Agreement.
|
|
128
129
|
|
|
129
130
|
<!-- Changelog -->
|
|
130
|
-
## v5.0.
|
|
131
|
+
## v5.0.22 (2025-09-12)
|
|
131
132
|
|
|
132
133
|
<!-- Release notes generated using configuration in .github/release.yml at main -->
|
|
133
134
|
|
|
@@ -135,6 +136,8 @@ and is not covered by the Salesforce Master Subscription Agreement.
|
|
|
135
136
|
|
|
136
137
|
### Changes
|
|
137
138
|
|
|
138
|
-
-
|
|
139
|
+
- [DO NOT MERGE] minor changes on descriptions by [@jorgesolebur](https://github.com/jorgesolebur) in [#70](https://github.com/jorgesolebur/CumulusCI/pull/70)
|
|
140
|
+
- Feature/env support by [@rupeshjSFDC](https://github.com/rupeshjSFDC) in [#69](https://github.com/jorgesolebur/CumulusCI/pull/69)
|
|
141
|
+
- Removing the dev build to trigger patch release. by [@rupeshjSFDC](https://github.com/rupeshjSFDC) in [#73](https://github.com/jorgesolebur/CumulusCI/pull/73)
|
|
139
142
|
|
|
140
|
-
**Full Changelog**: https://github.com/jorgesolebur/CumulusCI/compare/v5.0.
|
|
143
|
+
**Full Changelog**: https://github.com/jorgesolebur/CumulusCI/compare/v5.0.21...v5.0.22
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
cumulusci/__about__.py,sha256=
|
|
1
|
+
cumulusci/__about__.py,sha256=iw4aHEmSrXTuJWAMrog8W6irAWatWfilwlzlQU49ZQY,23
|
|
2
2
|
cumulusci/__init__.py,sha256=jdanFQ_i8vbdO7Eltsf4pOfvV4mwa_Osyc4gxWKJ8ng,764
|
|
3
3
|
cumulusci/__main__.py,sha256=kgRH-n5AJrH_daCK_EJwH7azAUxdXEmpi-r-dPGMR6Y,43
|
|
4
4
|
cumulusci/conftest.py,sha256=AIL98BDwNAQtdo8YFmLKwav0tmrQ5dpbw1cX2FyGouQ,5108
|
|
5
|
-
cumulusci/cumulusci.yml,sha256=
|
|
5
|
+
cumulusci/cumulusci.yml,sha256=qkUOhpQwa75QUL1fZZPHGqDS3UXkGnAi81mEYv0R92Y,73665
|
|
6
6
|
cumulusci/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
cumulusci/cli/cci.py,sha256=yAq8jFoGde6g_1TeAAjzZYsk77itiONCQGBFe3g3nOs,11836
|
|
8
8
|
cumulusci/cli/error.py,sha256=znj0YN8D2Grozm1u7mZAsJlmmdGebbuy0c1ofQluL4Q,4410
|
|
@@ -235,7 +235,7 @@ cumulusci/tasks/dx_convert_from.py,sha256=io-6S3Kfp86GR7CAsHyFhPAW6XEtVKWVeJdNO0
|
|
|
235
235
|
cumulusci/tasks/metadeploy.py,sha256=33AX5701G2fyu42wNY9mitKAXq04Dxpg_WMIK59d4P8,15787
|
|
236
236
|
cumulusci/tasks/metaxml.py,sha256=S71Q1a9ovt3kYNoMAJRO-f2UsYSROYUWt278tfFTeaU,3547
|
|
237
237
|
cumulusci/tasks/sfdx.py,sha256=hZQls5HMG_NfeqgfkhfG-VcuzF3WSWVWZWKivVGAPgo,2627
|
|
238
|
-
cumulusci/tasks/util.py,sha256=
|
|
238
|
+
cumulusci/tasks/util.py,sha256=FDd4dl-P6fSwvg1jU0508hoV9G8eeDeu5aDQ_dwZQ5k,9534
|
|
239
239
|
cumulusci/tasks/apex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
240
240
|
cumulusci/tasks/apex/anon.py,sha256=vlCD2E_jG9jwoQgsFs6RU8g8z1aN2g30edVYcZVshFE,5923
|
|
241
241
|
cumulusci/tasks/apex/batch.py,sha256=TeDy3KeJBbtdzQXG8eoH0fcUCnRgU8XGAsePc3iXzT8,6779
|
|
@@ -545,7 +545,7 @@ cumulusci/tasks/salesforce/salesforce_files.py,sha256=91VHtOkZzi9Tabfy0IDFWBW5bZ
|
|
|
545
545
|
cumulusci/tasks/salesforce/sourcetracking.py,sha256=-JaZt1NNlA_dEzYsIHvFKZ9va-MMA2JOPIplFN1g2EM,18797
|
|
546
546
|
cumulusci/tasks/salesforce/trigger_handlers.py,sha256=cs6pDHhvi_eu0Vr8sLtfH2nrhlsF8TPrkKezjciy79o,4932
|
|
547
547
|
cumulusci/tasks/salesforce/uninstall_packaged_incremental.py,sha256=9-_3S0PaVm-K6t44McBHSfRTB7KVzkHUMii4-p5PkS0,5673
|
|
548
|
-
cumulusci/tasks/salesforce/update_dependencies.py,sha256=
|
|
548
|
+
cumulusci/tasks/salesforce/update_dependencies.py,sha256=84N_hUam6wNxrnseaGMJSSDtz02cV78MKWVQzwjVecY,12225
|
|
549
549
|
cumulusci/tasks/salesforce/update_profile.py,sha256=P8TQeWEjzXFI4hN5cUk9zMCweBerqNP08seIuYEo-RI,15163
|
|
550
550
|
cumulusci/tasks/salesforce/tests/__init__.py,sha256=zEUlLU8eRXUU1HAcYdHtdAgHbdlAPPj39rcWRPEu2H4,57
|
|
551
551
|
cumulusci/tasks/salesforce/tests/test_CreateCommunity.py,sha256=aepyVVrM6zfmT2UJ_pKKdgwv7DsU66F_eiwmE4EfVUo,8720
|
|
@@ -612,7 +612,7 @@ cumulusci/tasks/tests/test_promote_package_version.py,sha256=6sitwrB8kUnnOH943em
|
|
|
612
612
|
cumulusci/tasks/tests/test_pushfails.py,sha256=9JG9D0iD4dR-1fKheaRN7BEy3lzzuOKeRnQy03cwvZk,3214
|
|
613
613
|
cumulusci/tasks/tests/test_salesforce.py,sha256=yCGtuHapxyAEmXQhuF2g2fh2naknTu7Md4OfEJQvGAA,2594
|
|
614
614
|
cumulusci/tasks/tests/test_sfdx.py,sha256=oUbHo28d796m5RuskXMLitJw2rCLjjXIfxggzr4gsso,3545
|
|
615
|
-
cumulusci/tasks/tests/test_util.py,sha256=
|
|
615
|
+
cumulusci/tasks/tests/test_util.py,sha256=qejX50N8RjHLg_qoF-TkqhAFlAgKHjJKrYMRw1DaXa4,9174
|
|
616
616
|
cumulusci/tasks/utility/env_management.py,sha256=hJX6ySEiXD2oFW38JqbGQKMj89ucxdSBsPwytSdkgO8,6591
|
|
617
617
|
cumulusci/tasks/utility/tests/test_env_management.py,sha256=fw34meWGOe1YYZO449MMCi2O7BgSaOA_I_wScrIr1Uk,8702
|
|
618
618
|
cumulusci/tasks/vcs/__init__.py,sha256=ZzpMZnhooXZ6r_ywBVTS3UNw9uMcXW6h33LylRqTDK0,700
|
|
@@ -740,9 +740,9 @@ cumulusci/vcs/tests/dummy_service.py,sha256=RltOUpMIhSDNrfxk0LhLqlH4ppC0sK6NC2cO
|
|
|
740
740
|
cumulusci/vcs/tests/test_vcs_base.py,sha256=9mp6uZ3lTxY4onjUNCucp9N9aB3UylKS7_2Zu_hdAZw,24331
|
|
741
741
|
cumulusci/vcs/tests/test_vcs_bootstrap.py,sha256=N0NA48-rGNIIjY3Z7PtVnNwHObSlEGDk2K55TQGI8g4,27954
|
|
742
742
|
cumulusci/vcs/utils/__init__.py,sha256=py4fEcHM7Vd0M0XWznOlywxaeCtG3nEVGmELmEKVGU8,869
|
|
743
|
-
cumulusci_plus-5.0.
|
|
744
|
-
cumulusci_plus-5.0.
|
|
745
|
-
cumulusci_plus-5.0.
|
|
746
|
-
cumulusci_plus-5.0.
|
|
747
|
-
cumulusci_plus-5.0.
|
|
748
|
-
cumulusci_plus-5.0.
|
|
743
|
+
cumulusci_plus-5.0.22.dist-info/METADATA,sha256=ljfT50v3S8vBcucU0_ybSbrbqb_delTkke-edqFgf50,6089
|
|
744
|
+
cumulusci_plus-5.0.22.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
745
|
+
cumulusci_plus-5.0.22.dist-info/entry_points.txt,sha256=nTtu04b9iLXhzADcTrb5PwmdXE6e2MTUAMh9OK6Z2pg,80
|
|
746
|
+
cumulusci_plus-5.0.22.dist-info/licenses/AUTHORS.rst,sha256=PvewjKImdKPhhJ6xR2EEZ4T7GbpY2ZeAeyWm2aLtiMQ,676
|
|
747
|
+
cumulusci_plus-5.0.22.dist-info/licenses/LICENSE,sha256=NFsF_s7RVXk2dU6tmRAN8wF45pnD98VZ5IwqOsyBcaU,1499
|
|
748
|
+
cumulusci_plus-5.0.22.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|