summaryrefslogtreecommitdiffstats
path: root/comm/taskcluster/comm_taskgraph/transforms/merge_automation.py
diff options
context:
space:
mode:
Diffstat (limited to 'comm/taskcluster/comm_taskgraph/transforms/merge_automation.py')
-rw-r--r--comm/taskcluster/comm_taskgraph/transforms/merge_automation.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/comm/taskcluster/comm_taskgraph/transforms/merge_automation.py b/comm/taskcluster/comm_taskgraph/transforms/merge_automation.py
new file mode 100644
index 0000000000..75ced147bb
--- /dev/null
+++ b/comm/taskcluster/comm_taskgraph/transforms/merge_automation.py
@@ -0,0 +1,58 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Fix-ups for comm-central merge automation
+"""
+
+import os
+import re
+
+from taskgraph.transforms.base import TransformSequence
+
+from comm_taskgraph import COMM
+
+transforms = TransformSequence()
+
+
+def do_suite_verbump(replacements):
+ """Bump the minor version of suite version files."""
+ allowed_files = ("suite/config/version.txt", "suite/config/version_display.txt")
+ old_version, new_version = None, None
+
+ new_replacements = []
+ for file, old, new in replacements:
+ if file not in allowed_files:
+ break
+ if old_version is None or new_version is None:
+ path = os.path.join(COMM, file)
+ data = open(path).read()
+ match = re.match(r"^(2)\.(\d+)(a1)$", data)
+ if match:
+ old_version = match.group(0)
+
+ old_minor = match.group(2)
+ new_minor = str(int(old_minor) + 1)
+
+ new_version = f"{match.group(1)}.{new_minor}{match.group(3)}"
+
+ new_replacements.append([file, old_version, new_version])
+
+ if len(new_replacements) == len(replacements):
+ return new_replacements
+ else:
+ raise Exception(f"do_suite_version failed: {replacements}, {new_replacements}")
+
+
+@transforms.add
+def update_suite_versions(config, tasks):
+ for task in tasks:
+ if "merge_config" not in config.params:
+ break
+ behavior = config.params["merge_config"]["behavior"]
+ if behavior == "comm-bump-central":
+ merge_config = task["worker"]["merge-info"]
+ replacements = merge_config["replacements"]
+ merge_config["replacements"] = do_suite_verbump(replacements)
+
+ yield task