Skip to content

Commit 44bb26a

Browse files
committed
fix: preserve explicilty declared versions in pom.xml
1 parent c99b25e commit 44bb26a

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

monorepo-migration/modernize_pom.py

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ def modernize_pom(file_path, parent_version, source_repo_name=None):
2626
in_dependency = False
2727
in_reporting = False
2828
current_dependency_lines = []
29-
has_x_version_update = False
29+
should_preserve = False
30+
current_group_id = None
31+
has_version = False
3032

3133
for line in lines:
3234
# URL Modernization
@@ -36,7 +38,7 @@ def modernize_pom(file_path, parent_version, source_repo_name=None):
3638
repo_pattern = re.escape(source_repo_name)
3739
else:
3840
repo_pattern = r'[a-zA-Z0-9-]+'
39-
41+
4042
# Replace HTTPS URLs
4143
line = re.sub(
4244
r'https://github\.com/googleapis/' + repo_pattern,
@@ -82,7 +84,7 @@ def modernize_pom(file_path, parent_version, source_repo_name=None):
8284
in_dep_mgmt = False
8385
new_lines.append(line)
8486
continue
85-
87+
8688
if in_dep_mgmt:
8789
if '<dependencies>' in line:
8890
in_dependencies = True
@@ -92,26 +94,39 @@ def modernize_pom(file_path, parent_version, source_repo_name=None):
9294
in_dependencies = False
9395
new_lines.append(line)
9496
continue
95-
97+
9698
if in_dependencies:
9799
if '<dependency>' in line:
98100
in_dependency = True
99101
current_dependency_lines = [line]
100-
has_x_version_update = False
102+
should_preserve = False
103+
current_group_id = None
104+
has_version = False
101105
continue
102106
if '</dependency>' in line:
103107
in_dependency = False
104108
current_dependency_lines.append(line)
105-
if has_x_version_update:
109+
110+
# Preservation logic:
111+
# 1. Has x-version-update comment
112+
# 2. Is NOT com.google group AND has a version tag
113+
is_external = current_group_id and not current_group_id.startswith('com.google')
114+
if should_preserve or (is_external and has_version):
106115
new_lines.extend(current_dependency_lines)
107116
continue
108-
117+
109118
if in_dependency:
110119
current_dependency_lines.append(line)
111120
if '{x-version-update:' in line:
112-
has_x_version_update = True
121+
should_preserve = True
122+
if '<groupId>' in line:
123+
match = re.search(r'<groupId>(.*?)</groupId>', line)
124+
if match:
125+
current_group_id = match.group(1).strip()
126+
if '<version>' in line:
127+
has_version = True
113128
continue
114-
129+
115130
# Prune comments and extra whitespace in depMgmt for a cleaner result
116131
if not line.strip():
117132
new_lines.append(line)

0 commit comments

Comments
 (0)