diff options
Diffstat (limited to 'MgaRepo/cgiutil.py')
-rw-r--r-- | MgaRepo/cgiutil.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/MgaRepo/cgiutil.py b/MgaRepo/cgiutil.py new file mode 100644 index 0000000..68afdcd --- /dev/null +++ b/MgaRepo/cgiutil.py @@ -0,0 +1,53 @@ +#!/usr/bin/python +from MgaRepo import Error, config +from MgaRepo.svn import SVN +from MgaRepo.ConfigParser import NoSectionError +import time +import re + +class CgiError(Error): pass + +class SubmitTarget: + def __init__(self): + self.name = "" + self.target = "" + self.macros = [] + self.allowed = [] + self.scripts = [] + +TARGETS = [] + +def parse_macrosref(refs, config): + macros = [] + for name in refs: + secname = "macros %s" % name + try: + macros.extend(config.walk(secname, raw=True)) + except NoSectionError: + raise Error, "missing macros section " \ + "%r in configuration" % secname + return macros + +def get_targets(): + global TARGETS + if not TARGETS: + target = SubmitTarget() + targetoptions = {} + submit_re = re.compile("^submit\s+(.+)$") + for section in config.sections(): + m = submit_re.match(section) + if m: + target = SubmitTarget() + target.name = m.group(1) + for option, value in config.walk(section): + if option in ("target", "allowed", "scripts"): + setattr(target, option, value.split()) + elif option == "rpm-macros": + refs = value.split() + target.macros = parse_macrosref(refs, config) + else: + raise Error, "unknown [%s] option %s" % (section, option) + TARGETS.append(target) + return TARGETS + +# vim:et:ts=4:sw=4 |