aboutsummaryrefslogtreecommitdiffstats
path: root/reaktor/getconf.py
blob: cfb38f5f11b97bf111b0a5c62c5111ed2737cba9 (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
# getconf = make_getconf("dateiname.json")
# getconf(key) -> value
# oder error

import imp
import os


def make_getconf(filename):
    def getconf(prop, default_value=None):
        prop_split = prop.split('.')
        config = load_config(filename)
        # imp.reload(config)
        tmp = config.__dict__
        for pr in prop_split:
            if pr in tmp:
                tmp = tmp[pr]
            else:
                return default_value
        return tmp

    return getconf


def load_config(filename):
    dirname = os.path.dirname(filename)
    modname, ext = os.path.splitext(os.path.basename(filename))
    file, pathname, description = imp.find_module(modname, [dirname])
    try:
        ret = imp.load_module(modname, file, pathname, description)
    finally:
        if file:
            file.close()
    return ret