aboutsummaryrefslogtreecommitdiff
path: root/gitosis/configutil.py
blob: 3215b8543503b495f434933c4103ed02b1b5b287 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""
Useful wrapper functions to access ConfigParser structures.
"""
from ConfigParser import NoSectionErrorNoOptionErrorRawConfigParser
from UserDict import IterableUserDict
 
def getboolean_default(config, section, option, default_value):
    """
    Return the given section.variable, or return the default if no specific
    value is set.
    """
    try:
        value = config.getboolean(sectionoption)
    except (NoSectionErrorNoOptionError):
        value = default_value
    return value
def get_default(config, section, option, default_value):
    """
    Return the given section.variable, or return the default if no specific
    value is set.
    """
    try:
        value = config.get(sectionoption)
    except (NoSectionErrorNoOptionError):
        value = default_value
    return value
 
class GitosisConfigDict(IterableUserDict):
    def keys(self):
        return list(self.__iter__())
    def __iter__(self):
        saw = set()
        if 'gitosis' in self.data:
            saw.add('gitosis')
            yield 'gitosis'
        sorted_keys = self.data.keys()
        sorted_keys.sort()
        for _ in sorted_keys:
            if _.startswith('group '):
                saw.add(_)
                yield _
        for _ in sorted_keys:
            if _.startswith('repo '):
                saw.add(_)
                yield _
        for _ in sorted_keys:
            if _ not in saw:
                saw.add(_)
                yield _
    
 
class GitosisRawConfigParser(RawConfigParser):
    def __init__(self, defaults=None):
        RawConfigParser.__init__(selfdefaults)
        self._sections = GitosisConfigDict(self._sections)