summaryrefslogtreecommitdiff
path: root/instructions_extractor.py
blob: 8d1d372694e09c7d2f4e2bbb3336082e606aca4d (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
#!/usr/bin/env python3
# SPDX-License-Identifier: AGPL-3.0-or-later

import glob
import os
import sys

def print_instructions(p, fname):
    try:
        print("---------------")
        l = p.split(os.sep)
        l1 = []
        for i in range(len(l)):
            f = os.path.join(*l[:i+1])
            if os.path.islink(f):
                s = "{0} ({1})".format(l[i], os.path.split(os.readlink(f))[1])
            else:
                s = l[i]
            l1.append(s)
        print(p)
        print(" - ".join(l1))
        with open(os.path.join(p, fname)) as f:
            task_code = compile(f.read(), fname, 'exec')
            d = {}
            exec(task_code, globals(), d)
            for lang, text in d['instructions'].items():
                print("Language: {0}".format(lang))
                print(text.encode('utf-8'))
                print("")
    except Exception as e:
        print(e)

if __name__ == '__main__':
    l = glob.glob(sys.argv[1])
    l.sort()
    for d in l:
        for root, dirs, files in os.walk(d, followlinks=True):
            for fname in files:
                if fname == 'task.py':
                    print_instructions(root, fname)