From da50b12d4c6eeca8dda1f97e49163c611c2b78b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Thu, 26 Aug 2010 18:51:14 +0200 Subject: Parse flag descriptions in repoman.utilities.parse_metadata_use(). Grab the USE descriptions from metadata.xml within parse_metadata_use(). Instead of a plain flag list, return a dict containing both the flag names and their descriptions. --- pym/repoman/utilities.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'pym/repoman/utilities.py') diff --git a/pym/repoman/utilities.py b/pym/repoman/utilities.py index 9dd5cde35..ed0de4449 100644 --- a/pym/repoman/utilities.py +++ b/pym/repoman/utilities.py @@ -23,6 +23,7 @@ __all__ = [ import codecs import errno import logging +import re import sys from portage import os from portage import subprocess_getstatusoutput @@ -110,12 +111,15 @@ def have_profile_dir(path, maxdepth=3, filename="profiles.desc"): path = normalize_path(path + "/..") maxdepth -= 1 -def parse_metadata_use(xml_tree, uselist=None): +whitespace_re = re.compile('\s+') + +def parse_metadata_use(xml_tree): """ Records are wrapped in XML as per GLEP 56 - returns a dict of the form a list of flags""" - if uselist is None: - uselist = [] + returns a dict with keys constisting of USE flag names and values + containing their respective descriptions + """ + uselist = {} usetag = xml_tree.findall("use") if not usetag: @@ -127,9 +131,12 @@ def parse_metadata_use(xml_tree, uselist=None): for flag in flags: pkg_flag = flag.get("name") + pkg_flag_value = whitespace_re.sub(' ', flag.text).strip() if pkg_flag is None: raise exception.ParseError("missing 'name' attribute for 'flag' tag") - uselist.append(pkg_flag) + if not pkg_flag_value: + raise exception.ParseError("missing USE description with the 'flag' tag") + uselist[pkg_flag] = pkg_flag_value return uselist class UnknownHerdsError(ValueError): -- cgit v1.2.3-1-g7c22