diff options
Diffstat (limited to 'UpdateManagerCommon/DistInfo.py')
| -rw-r--r-- | UpdateManagerCommon/DistInfo.py | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/UpdateManagerCommon/DistInfo.py b/UpdateManagerCommon/DistInfo.py new file mode 100644 index 00000000..df244a51 --- /dev/null +++ b/UpdateManagerCommon/DistInfo.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python +# DistInfo.py - simple parser for a xml-based metainfo file +# +# Copyright (c) 2005 Gustavo Noronha Silva +# +# Author: Gustavo Noronha Silva <kov@debian.org> +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import os +import gettext +import ConfigParser + +_ = gettext.gettext + +class Suite: + name = None + description = None + base_uri = None + repository_type = None + components = None + +class Component: + name = None + description = None + enabled = None + +class DistInfo: + def __init__(self, + dist = None, + base_dir = "/usr/share/update-manager/dists"): + self.metarelease_uri = '' + self.suites = [] + + if not dist: + pipe = os.popen("lsb_release -i | cut -d : -f 2-") + dist = pipe.read().strip() + pipe.close() + del pipe + + dist_fname = "%s/%s.info" % (base_dir, dist) + dist_file = open (dist_fname) + if not dist_file: + return + suite = None + component = None + for line in dist_file: + tokens = line.split (':', 1) + if len (tokens) < 2: + continue + field = tokens[0].strip () + value = tokens[1].strip () + if field == 'ChangelogURI': + self.changelogs_uri = _(value) + elif field == 'MetaReleaseURI': + self.metarelease_uri = value + elif field == 'Suite': + if suite: + if component: + suite.components.append (component) + component = None + self.suites.append (suite) + suite = Suite () + suite.name = value + suite.components = [] + elif field == 'RepositoryType': + suite.repository_type = value + elif field == 'BaseURI': + suite.base_uri = value + elif field == 'Description': + suite.description = _(value) + elif field == 'Component': + if component: + suite.components.append (component) + component = Component () + component.name = value + elif field == 'Enabled': + component.enabled = bool(int(value)) + elif field == 'CompDescription': + component.description = _(value) + if suite: + if component: + suite.components.append (component) + component = None + self.suites.append (suite) + suite = None + + +if __name__ == "__main__": + d = DistInfo ("Debian", "../distribution-data") + print d.changelogs_uri + for suite in d.suites: + print suite.name + print suite.description + print suite.base_uri + for component in suite.components: + print component.name + print component.description + print component.enabled |
