def parse_profiles(xml_path): """ Parse .qi/qibuild.xml. Return a dict name -> Profile """ res = dict() tree = qixml.read(xml_path) root = tree.getroot() profile_elems = root.findall("profiles/profile") for profile_elem in profile_elems: profile_name = qixml.parse_required_attr(profile_elem, "name") profile = Profile(profile_name) res[profile_name] = profile cmake_elem = profile_elem.find("cmake") if cmake_elem is None: continue flags_elem = cmake_elem.find("flags") if flags_elem is None: continue flag_elems = flags_elem.findall("flag") for flag_elem in flag_elems: key = qixml.parse_required_attr(flag_elem, "name") value = flag_elem.text.strip() to_add = "%s=%s" % (key, value) profile.cmake_flags.append(to_add) return res
def test_parse_required_attr(): tree = etree.fromstring("<foo />") with pytest.raises(Exception): qixml.parse_required_attr(tree, "bar") tree = etree.fromstring("<foo bar=\"foo\" />") assert qixml.parse_required_attr(tree, "bar") == "foo"
def parse(self, xml_elem): self.src = qixml.parse_required_attr(xml_elem, "src") self.manifest = qixml.parse_bool_attr(xml_elem, "manifest") self.review = qixml.parse_bool_attr(xml_elem, "review") self.profile = xml_elem.get("profile", "default") self.remote = xml_elem.get("remote", "origin") self.branch = xml_elem.get("branch", "master")
def parse_qiproject_xml(self): qiproject_xml = os.path.join(self.path, "qiproject.xml") if not os.path.exists(qiproject_xml): return tree = qixml.read(qiproject_xml) project_elems = tree.findall("project") for project_elem in project_elems: src = qixml.parse_required_attr(project_elem, "src", xml_path=qiproject_xml) self.subprojects.append(src)
def parse(self, element): self.name = qixml.parse_required_attr(element, "name") self.src = element.get("src", ".") self.dest = element.get("dest", self.name) depends_elements = element.findall("depends") for depends_element in depends_elements: depends = Depends() depends.parse(depends_element) self.depends.append(depends.name)
def parse(self, xml_element): self.name = xml_element.get("name") if not self.name: self.name = "origin" self.fetch = qixml.parse_required_attr(xml_element, "fetch") self.review = xml_element.get("review") self.revision = xml_element.get("revision") if not self.revision: self.revision = "master"
def _parse(self, element): ''' This function parses XML configuration for the documentation project. ''' self.name = qixml.parse_required_attr(element, "name") self.src = element.get("src", ".") self.dest = element.get("dest", self.name) depends_elements = element.findall("depends") for depends_element in depends_elements: self.dependencies.append(depends_element.get('name'))
def parse(self, xml_element): self.name = qixml.parse_required_attr(xml_element, "name") xml_path = xml_element.get("path") if not xml_path: self.path = self.name.replace(".git", "") else: self.path = qisys.sh.to_posix_path(xml_path) self.path = posixpath.normpath(xml_path) self.revision = xml_element.get("revision") self.worktree_name = xml_element.get("worktree_name") self.review = qixml.parse_bool_attr(xml_element, "review") self.remote = xml_element.get("remote", default="origin")