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()}\n{f.readline()}" # 4 lines: extend, class, tool, icon
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("]")