[DEV] add function to clear and set tags in manifest
This commit is contained in:
parent
936d5d028c
commit
7e0a7fe45b
@ -378,3 +378,118 @@ class Manifest():
|
||||
return out
|
||||
|
||||
|
||||
def tag_manifest(manifest_xml_filename, all_tags):
|
||||
tree = etree.parse(manifest_xml_filename)
|
||||
debug.debug("manifest : '" + manifest_xml_filename + "'")
|
||||
root = tree.getroot()
|
||||
includes = []
|
||||
if root.tag != "manifest":
|
||||
debug.error("(l:" + str(child.sourceline) + ") in '" + str(file) + "' have not main xml node='manifest'")
|
||||
return False
|
||||
for child in root:
|
||||
if type(child) == etree._Comment:
|
||||
debug.verbose("(l:" + str(child.sourceline) + ") comment='" + str(child.text) + "'");
|
||||
continue
|
||||
if child.tag == "remote":
|
||||
continue
|
||||
if child.tag == "include":
|
||||
name = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name]")
|
||||
debug.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "'");
|
||||
# check if the file exist ...
|
||||
new_name_xml = os.path.join(os.path.dirname(manifest_xml_filename),name)
|
||||
if os.path.exists(new_name_xml) == False:
|
||||
debug.error("(l:" + str(child.sourceline) + ") The file does not exist : '" + new_name_xml + "'")
|
||||
includes.append({
|
||||
"name":name,
|
||||
"path":new_name_xml,
|
||||
"manifest":None
|
||||
})
|
||||
continue
|
||||
if child.tag == "default":
|
||||
continue
|
||||
if child.tag == "project":
|
||||
name = ""
|
||||
path = ""
|
||||
tag_sha1 = None
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
elif attr == "path":
|
||||
path = child.attrib[attr]
|
||||
elif attr == "tag":
|
||||
tag_sha1 = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name,tag,sync-s]")
|
||||
if name == "":
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: '" + child.tag + "' missing attribute: 'name' ==> specify the git to clone ...")
|
||||
for elem_tag in all_tags:
|
||||
if elem_tag["name"] == name:
|
||||
child.set("tag", elem_tag["tag"])
|
||||
continue
|
||||
if child.tag == "option":
|
||||
# not managed ==> future use
|
||||
continue
|
||||
if child.tag == "link":
|
||||
continue
|
||||
debug.info("(l:" + str(child.sourceline) + ") '" + str(child.tag) + "' values=" + str(child.attrib));
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing error Unknow NODE : '" + str(child.tag) + "' availlable:[remote,include,default,project,option,link]")
|
||||
tree.write(manifest_xml_filename, pretty_print=True, xml_declaration=True, encoding="utf-8")
|
||||
# now we parse all sub repo:
|
||||
for elem in includes:
|
||||
tag_manifest(elem["path"], all_tags)
|
||||
|
||||
|
||||
|
||||
def tag_clear(manifest_xml_filename):
|
||||
tree = etree.parse(manifest_xml_filename)
|
||||
debug.debug("manifest : '" + manifest_xml_filename + "'")
|
||||
root = tree.getroot()
|
||||
includes = []
|
||||
if root.tag != "manifest":
|
||||
debug.error("(l:" + str(child.sourceline) + ") in '" + str(file) + "' have not main xml node='manifest'")
|
||||
return False
|
||||
for child in root:
|
||||
if type(child) == etree._Comment:
|
||||
debug.verbose("(l:" + str(child.sourceline) + ") comment='" + str(child.text) + "'");
|
||||
continue
|
||||
if child.tag == "remote":
|
||||
continue
|
||||
if child.tag == "include":
|
||||
name = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name]")
|
||||
debug.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "'");
|
||||
# check if the file exist ...
|
||||
new_name_xml = os.path.join(os.path.dirname(manifest_xml_filename),name)
|
||||
if os.path.exists(new_name_xml) == False:
|
||||
debug.error("(l:" + str(child.sourceline) + ") The file does not exist : '" + new_name_xml + "'")
|
||||
includes.append({
|
||||
"name":name,
|
||||
"path":new_name_xml,
|
||||
"manifest":None
|
||||
})
|
||||
continue
|
||||
if child.tag == "default":
|
||||
continue
|
||||
if child.tag == "project":
|
||||
child.attrib.pop("tag", None)
|
||||
continue
|
||||
if child.tag == "option":
|
||||
continue
|
||||
if child.tag == "link":
|
||||
continue
|
||||
debug.info("(l:" + str(child.sourceline) + ") '" + str(child.tag) + "' values=" + str(child.attrib));
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing error Unknow NODE : '" + str(child.tag) + "' availlable:[remote,include,default,project,option,link]")
|
||||
tree.write(manifest_xml_filename, pretty_print=True, xml_declaration=True, encoding="utf-8")
|
||||
# now we parse all sub repo:
|
||||
for elem in includes:
|
||||
tag_clear(elem["path"])
|
||||
|
Loading…
x
Reference in New Issue
Block a user