summaryrefslogtreecommitdiffstats
path: root/splitrules.py
blob: 16d27b6e5c14dad98cafae2b5ab4bf056e52f1df (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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env python
# SPDX-License-Identifier: GPL-2.0-only
# Copyright Thomas Gleixner <tglx@linutronix.de>

from argparse import ArgumentParser, REMAINDER
import sys
import os

if __name__ == '__main__':

    parser = ArgumentParser(description='Split rules file')
    parser.add_argument('template', metavar='template',
                        help='Commit message template')
    parser.add_argument('rulesfile', metavar='rulesfile',
                        help='Rules file to split up')

    args = parser.parse_args()

    template = open(args.template).readlines()
    lines = open(args.rulesfile).readlines()

    rulenr = 0
    rulename = None
    spdx = None
    patterns = []
    nrpatterns = 0
    nrfiles = 0
    inpattern = False
    infiles = False

    try:
        os.mkdir('rules')
    except:
        pass

    for line in lines:
        l = line.strip()
        if l.startswith('Rule:'):
            if rulenr:
                try:
                    fd = open('rules/%04d-%s' %(rulenr, rulename), 'w')
                    for tl in template:
                        tl = tl.replace('$RULE', '%d' %rulenr)
                        tl = tl.replace('$NRPATTERNS', '%d' %nrpatterns)
                        tl = tl.replace('$NRFILES', '%d' %nrfiles)

                        if tl.startswith('$PATTERNS'):
                            fd.writelines(patterns)
                        else:
                            fd.write(tl)
                    fd.close()
                except Exception, ex:
                    print(ex)
                    sys.exit(1)

            rulenr += 1
            rulename = l.split(':')[1].strip()
            spdx = None
            patterns = []
            nrpatterns = 0
            nrfiles = 0
            inpattern = False
            infiles = False
            continue

        elif not inpattern and not infiles:
            if l.startswith('Files:'):
                nrfiles = int(l.split(':')[1].strip())
            elif l.startswith('Patterns'):
                nrpatterns = int(l.split(':')[1].strip())
                inpattern = True
            continue

        elif inpattern:
            if l.startswith('Filenames:'):
                inpattern = False
                infiles = True
            else:
                patterns.append(line)
            continue

        else:
            continue