summaryrefslogtreecommitdiff
path: root/abook-to-clab
blob: f182972b474bf4b80f81fd9222f02193c037de50 (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
#!/usr/bin/python


import ConfigParser
import os
import yaml
import sys


records = {}

for filename in sys.argv[1:]:
    cp = ConfigParser.ConfigParser()
    cp.read([filename])
    for section in cp.sections():
        if section == 'format':
            continue
        obj = {}
        for option in cp.options(section):
            assert option not in obj
            v = cp.get(section, option, raw=True)
            if ',' in v:
                vs = v.split(',')
                obj[option] = dict((str(i), x) for i, x in enumerate(vs))
            else:
                obj[option] = v

        assert type(obj['name']) is str
        uid = ''.join(obj['name'].split()).lower()
        if uid in records:
            r = records[uid]
            for key in obj:
                if key in r:
                    v = r[key]
                    if type(v) is dict:
                        v[str(len(v) + 1)] = obj[key]
                    else:
                        r[key] = { '0': v, '1': obj[key] }
                else:
                    r[key] = obj[key]
        else:
            records[uid] = obj

for uid, r in records.iteritems():
    with open(os.path.join('db', uid + '.yaml'), 'w') as f:
        yaml.safe_dump(r, stream=f, default_flow_style=False)