[yum-git] yum/comps.py
Seth Vidal
skvidal at linux.duke.edu
Mon Feb 25 03:48:29 UTC 2008
yum/comps.py | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
New commits:
commit bcf16e43e01abebe59d29807e98795ef9b32d54a
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Sun Feb 24 22:43:28 2008 -0500
implement xml() method to comps, group and category object - to dump
back out what we just read in/merged.
diff --git a/yum/comps.py b/yum/comps.py
index 3441469..3500843 100755
--- a/yum/comps.py
+++ b/yum/comps.py
@@ -193,6 +193,40 @@ class Group(object):
if not self.translated_description.has_key(lang):
self.translated_description[lang] = obj.translated_description[lang]
+ def xml(self):
+ """write out an xml stanza for the group object"""
+ msg ="""
+ <group>
+ <id>%s</id>
+ <default>%s</default>
+ <uservisible>%s</uservisible>
+ <display_order>%s</display_order>\n""" % (self.groupid, str(self.default),
+ str(self.user_visible), self.display_order)
+
+ if self.langonly:
+ msg =+ """ <lang_only>%s</lang_only>""" % self.langonly
+
+ msg +=""" <name>%s</name>\n""" % self.name
+ for (lang, val) in self.translated_name.items():
+ msg += """ <name xml:lang="%s">%s</name>\n""" % (lang, val)
+
+ msg += """ <description>%s</description>\n""" % self.description
+ for (lang, val) in self.translated_description.items():
+ msg += """ <description xml:lang="%s">%s</description>\n""" % (lang, val)
+
+ msg += """ <packagelist>\n"""
+ for pkg in self.mandatory_packages.keys():
+ msg += """ <packagereq type="mandatory">%s</packagereq>\n""" % pkg
+ for pkg in self.default_packages.keys():
+ msg += """ <packagereq type="default">%s</packagereq>\n""" % pkg
+ for pkg in self.optional_packages.keys():
+ msg += """ <packagereq type="optional">%s</packagereq>\n""" % pkg
+ for (pkg, req) in self.conditional_packages.items():
+ msg += """ <packagereq type="conditional" requires="%s">%s</packagereq>\n""" % (pkg, req)
+ msg += """ </packagelist>\n"""
+ msg += """ </group>"""
+
+ return msg
@@ -275,6 +309,28 @@ class Category(object):
if not self.translated_description.has_key(lang):
self.translated_description[lang] = obj.translated_description[lang]
+ def xml(self):
+ """write out an xml stanza for the group object"""
+ msg ="""
+ <category>
+ <id>%s</id>
+ <display_order>%s</display_order>\n""" % (self.categoryid, self.display_order)
+
+ msg +=""" <name>%s</name>\n""" % self.name
+ for (lang, val) in self.translated_name.items():
+ msg += """ <name xml:lang="%s">%s</name>\n""" % (lang, val)
+
+ msg += """ <description>%s</description>\n""" % self.description
+ for (lang, val) in self.translated_description.items():
+ msg += """ <description xml:lang="%s">%s</description>\n""" % (lang, val)
+
+ msg += """ <grouplist>\n"""
+ for grp in self.groups:
+ msg += """ <groupid>%s</groupid>\n""" % grp
+ msg += """ </grouplist>\n"""
+ msg += """ </category>\n"""
+
+ return msg
class Comps(object):
def __init__(self, overwrite_groups=False):
@@ -402,7 +458,29 @@ class Comps(object):
break
self.compiled = True
+
+ def xml(self):
+ """returns the xml of the comps files in this class, merged"""
+ if not self._groups and not self._categories:
+ return ""
+
+ msg = """<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
+<comps>
+"""
+
+ for g in self.get_groups():
+ msg += g.xml()
+ for c in self.get_categories():
+ msg += c.xml()
+
+ msg += """</comps>\n"""
+
+ return msg
+
+
+
def main():
try:
More information about the Yum-cvs-commits
mailing list