Pythongenerate.py -rwxr-xr-x 890 B
1#!/usr/bin/env python
2
3import subprocess
4import json
5from os import path
6from multiprocessing import cpu_count
7
8import ninja_syntax
9
10if __name__ == "__main__":
11 with open("grammars.json", "r") as fp:
12 grammars = json.loads(fp.read())
13
14 with open("generate.ninja", "w") as fp:
15 w = ninja_syntax.Writer(fp)
16 w.comment("automatically generated, do not edit.")
17 w.rule("generate", "cd $in && tree-sitter generate")
18 # NOTE: this will use a lot of memory on your system, you might decrase
19 # the parallelism count here if you encounter issues.
20 w.pool("generate", cpu_count())
21 for grammar in grammars:
22 parser_out = path.join(grammar["path"], "src/parser.c")
23 w.build(parser_out, "generate", inputs=[grammar["path"]], pool="generate")
24
25 w.close()
26
27 subprocess.call(["ninja", "-f", "generate.ninja"])