small racing game im working on
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
import re
from glob import glob

find_class = re.compile("class_name\s+(.+)")
find_base = re.compile("extends\s+(.+)")
classes = []  # { file, class name, base class name }

for file in glob("**/*.gd", recursive=True):
    with open(file, "r") as f:
        text = f"{f.readline()}\n{f.readline()}\n{f.readline()}"  # 3 lines: extend, class, tool
        m = find_class.search(text)
        if not m:
            continue
        class_name = m.groups()[0]
        m = find_base.search(text)
        base = m.groups()[0]
        classes.append(
            {"class_name": class_name, "base_class_name": base, "file": file}
        )

first = True
print("list=[", end="")
for c in classes:
    if not first:
        print(", ", end="")
    first = False
    print("{")
    print(f'"base": "{c["base_class_name"]}",')
    print(f'"class": &"{c["class_name"]}",')
    print('"language": &"GDScript",')
    print(f'"path": "res://{c["file"]}"')
    print("}", end="")
print("]")