Skip to content

Commit 2a183df

Browse files
authored
chore: support split release-please configuration (#2162)
* chore: support split release-please configuration * chore: use `release-please-submodules.json` as an exclusion list from bundled release * chore: lint
1 parent b1b05f7 commit 2a183df

1 file changed

Lines changed: 35 additions & 11 deletions

File tree

synthtool/languages/node_mono_repo.py

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -129,17 +129,41 @@ def write_release_please_config(owlbot_dirs):
129129
except json.JSONDecodeError:
130130
logger.warning(f"Could not decode {ignore_file}, ignoring.")
131131

132-
with open("release-please-config.json", "r") as f:
133-
data = json.load(f)
134-
for dir in owlbot_dirs:
135-
result = re.search(PACKAGE_DIRECTORIES_REGEX, dir)
136-
assert result is not None
137-
package_name = result.group()
138-
if package_name in ignore_list:
139-
continue
140-
data["packages"][package_name] = {}
141-
with open("release-please-config.json", "w") as f:
142-
json.dump(data, f, indent=2)
132+
config_path = Path("release-please-config.json")
133+
submodules_path = Path("release-please-submodules.json")
134+
135+
with open(config_path, "r") as f:
136+
config_data = json.load(f)
137+
138+
submodules_data = None
139+
if submodules_path.is_file():
140+
with open(submodules_path, "r") as f:
141+
submodules_data = json.load(f)
142+
143+
# If submodules config exists, use it as an exclusion list from bundled release
144+
non_bundled_packages = (
145+
set(submodules_data.get("packages", {}).keys()) if submodules_data else set()
146+
)
147+
148+
for dir in owlbot_dirs:
149+
result = re.search(PACKAGE_DIRECTORIES_REGEX, dir)
150+
assert result is not None
151+
package_name = result.group()
152+
153+
if package_name in ignore_list:
154+
continue
155+
156+
if package_name in non_bundled_packages:
157+
# remove from bundled release
158+
if package_name in config_data["packages"]:
159+
del config_data["packages"][package_name]
160+
else:
161+
if package_name not in config_data["packages"]:
162+
config_data["packages"][package_name] = {}
163+
164+
with open(config_path, "w") as f:
165+
json.dump(config_data, f, indent=2)
166+
f.write("\n")
143167

144168

145169
def template_metadata(relative_dir: str) -> Dict[str, Any]:

0 commit comments

Comments
 (0)