mirror of
https://gitea.fenix-dev.com/fenix-gitea-admin/iac-opentofu-private.git
synced 2025-10-27 07:43:07 +00:00
Add merge_yaml.py
This commit is contained in:
35
merge_yaml.py
Normal file
35
merge_yaml.py
Normal file
@ -0,0 +1,35 @@
|
||||
|
||||
#!/usr/bin/env python3
|
||||
import yaml
|
||||
import sys
|
||||
import json
|
||||
from collections.abc import Mapping
|
||||
|
||||
def deep_merge_yaml(dict1, dict2):
|
||||
result = dict1.copy()
|
||||
for key, value in dict2.items():
|
||||
if key in result:
|
||||
if isinstance(result[key], list) and isinstance(value, list):
|
||||
result[key] = result[key] + value
|
||||
elif isinstance(result[key], Mapping) and isinstance(value, Mapping):
|
||||
result[key] = deep_merge_yaml(result[key], value)
|
||||
else:
|
||||
result[key] = value
|
||||
else:
|
||||
result[key] = value
|
||||
return result
|
||||
|
||||
def main():
|
||||
input_data = json.load(sys.stdin)
|
||||
file1 = input_data["file1"]
|
||||
file2 = input_data["file2"]
|
||||
|
||||
with open(file1, "r") as f1, open(file2, "r") as f2:
|
||||
yaml1 = yaml.safe_load(f1)
|
||||
yaml2 = yaml.safe_load(f2)
|
||||
|
||||
merged = deep_merge_yaml(yaml1, yaml2)
|
||||
print(json.dumps({"merged_yaml": yaml.dump(merged, sort_keys=False)}))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user