Last active
October 1, 2024 12:28
-
-
Save jacobabrahamb4/af02cc037e995776763f9d47fe3edef6 to your computer and use it in GitHub Desktop.
Pythin script to search and replace revisions in repo manifests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import xml.dom.minidom, collections | |
import xml.etree.ElementTree as ET | |
#snap_combined_jc | |
effective_manifest_gitlab = xml.dom.minidom.parse('./qcm_test_1/effective_manifest_1.xml') | |
snap_combined_manifest_kernel = xml.dom.minidom.parse('./qcm_test_1/snap_combined_manifest_kernel.xml') | |
snap_combined_manifest_qssi = xml.dom.minidom.parse('./qcm_test_1/snap_combined_manifest_qssi.xml') | |
snap_combined_manifest_vendor = xml.dom.minidom.parse('./qcm_test_1/snap_combined_manifest_vendor.xml') | |
#effective_manifest = xml.dom.minidom.parse('effective_manifest.xml') | |
projects_gitlab = effective_manifest_gitlab.getElementsByTagName('project') | |
projects_qcom_kernel = snap_combined_manifest_kernel.getElementsByTagName('project') | |
projects_qcom_qssi = snap_combined_manifest_qssi.getElementsByTagName('project') | |
projects_qcom_vendor = snap_combined_manifest_vendor.getElementsByTagName('project') | |
all_projects_and_revisions_gitlab = {} | |
all_projects_and_revisions_qcom = {} | |
for project in projects_gitlab: | |
name = project.getAttribute("name") | |
revision = project.getAttribute("revision") | |
all_projects_and_revisions_gitlab[name] = revision | |
for project in projects_qcom_kernel: | |
name = project.getAttribute("name") | |
revision = project.getAttribute("revision") | |
all_projects_and_revisions_qcom[name] = revision | |
for project in projects_qcom_qssi: | |
name = project.getAttribute("name") | |
revision = project.getAttribute("revision") | |
all_projects_and_revisions_qcom[name] = revision | |
for project in projects_qcom_vendor: | |
name = project.getAttribute("name") | |
revision = project.getAttribute("revision") | |
all_projects_and_revisions_qcom[name] = revision | |
all_projects_and_revisions_gitlab_sorted = collections.OrderedDict(sorted(all_projects_and_revisions_gitlab.items())) | |
all_projects_and_revisions_qcom_sorted = collections.OrderedDict(sorted(all_projects_and_revisions_qcom.items())) | |
diffs_and_revisions = {} | |
for key in all_projects_and_revisions_qcom_sorted: | |
if key not in all_projects_and_revisions_gitlab_sorted.keys(): | |
print("Not present --> ", key) | |
for key in all_projects_and_revisions_qcom_sorted: | |
try: | |
if all_projects_and_revisions_qcom_sorted[key] != all_projects_and_revisions_gitlab_sorted[key]: | |
#print("Differs --> ", key, " --> ", all_projects_and_revisions_qcom_sorted[key]) | |
diffs_and_revisions[key] = all_projects_and_revisions_qcom_sorted[key] | |
except KeyError: | |
#print("Key error: --> ", key) | |
pass | |
for key in diffs_and_revisions: | |
print("Differs ---------> ", key, " --> ", diffs_and_revisions[key]) | |
#qssi_xml = xml.dom.minidom.parse('./existing/qssi.xml') | |
#vendor_standalone_xml = xml.dom.minidom.parse('./existing/vendor_standalone.xml') | |
##tree_qssi = ET.ElementTree(file='./existing/qssi.xml') | |
#tree_vendor = ET.ElementTree(file='./existing/vendor_standalone.xml') | |
#root_qssi = tree_qssi.getroot() | |
#root_vendor = tree_vendor.getroot() | |
#for project in root_qssi.iter('project'): | |
# name = project.get('name') | |
# if name in diffs_and_revisions.keys(): | |
# #project.remove('revision') | |
# project.set('revision', diffs_and_revisions[name]) | |
#for project in root_vendor.iter('project'): | |
# name = project.get('name') | |
# if name in diffs_and_revisions.keys(): | |
# #project.remove('revision') | |
# project.set('revision', diffs_and_revisions[name]) | |
#tree_qssi.write('./existing/qssi_m.xml') | |
#tree_vendor.write('./existing/vendor_standalone_m.xml') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment