def get_metadata_xml(herds=(), maintainers=(), local_use=(), longdescription=None): hs = ms = us = ls = "" if herds: hs = "<herd>%s</herd>\n" % "</herd><herd>".join(herds) if maintainers: ms = [] for x in maintainers: ms.append("<email>%s</email>" % x[0]) if len(x) > 1: ms[-1] = "%s\n<name>%s</name>" % (ms[-1], x[1]) ms = "<maintainer>%s</maintainer>\n" % \ "</maintainer><maintainer>".join(ms) if local_use: us = ['<use>'] for flag in local_use: us.append('<flag name="%s">use flag description</flag>' % flag) us.append('</use>') us = '\n'.join(us) if longdescription: ls = "<longdescription>%s</longdescription>\n" % longdescription s = \ """<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> %s%s%s%s</pkgmetadata>""" % (hs, ms, us, ls) return repo_objs.MetadataXml(data_source(s.encode('utf-8')))
def get_metadata_xml(maintainers=(), comments=(), local_use={}, longdescription=None, maint_type=None): cs = '\n'.join(comments) ms = us = ls = "" if maintainers: ms = [] for x in maintainers: ms.append(f"<email>{x[0]}</email>") if len(x) > 1: ms[-1] += f"\n<name>{x[1]}</name>" if len(x) > 2: ms[-1] += f"\n<description>{x[2]}</description>" if len(x) > 3: raise ValueError('maintainer data has too many fields') maint_type = (f'type="{maint_type}"' if maint_type is not None else '') ms = '\n'.join(f'<maintainer {maint_type}>{x}</maintainer>' for x in ms) if local_use: us = ['<use>'] for flag, desc in local_use.items(): us.append(f'<flag name="{flag}">{desc}</flag>') us.append('</use>') us = '\n'.join(us) if longdescription: ls = f"<longdescription>{longdescription}</longdescription>\n" s = \ f"""<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> {cs}{ms}{us}{ls}</pkgmetadata>""" return repo_objs.MetadataXml(data_source(s.encode('utf-8')))
def get_metadata_xml(maintainers=(), local_use={}, longdescription=None): hs = ms = us = ls = "" if maintainers: ms = [] for x in maintainers: ms.append(f"<email>{x[0]}</email>") if len(x) > 1: ms[-1] = f"{ms[-1]}\n<name>{x[1]}</name>" ms = "<maintainer>%s</maintainer>\n" % "</maintainer><maintainer>".join( ms) if local_use: us = ['<use>'] for flag, desc in local_use.items(): us.append(f'<flag name="{flag}">{desc}</flag>') us.append('</use>') us = '\n'.join(us) if longdescription: ls = f"<longdescription>{longdescription}</longdescription>\n" s = \ f"""<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> {hs}{ms}{us}{ls}</pkgmetadata>""" return repo_objs.MetadataXml(data_source(s.encode('utf-8')))
def generic_metadata_xml(self, attr): m = repo_objs.MetadataXml(None) object.__setattr__(m, "_"+attr, "foon") object.__setattr__(m, "_source", None) o = self.make_shared_pkg_data(metadata_xml=m) assert getattr(o, attr) == "foon"