aboutsummaryrefslogtreecommitdiff
path: root/scripts/qapi-gen.py
blob: 2100ca1145263e251d38d05c5af36c9f6b241275 (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
#!/usr/bin/env python
# QAPI generator
#
# This work is licensed under the terms of the GNU GPL, version 2 or later.
# See the COPYING file in the top-level directory.

import sys
from qapi.common import parse_command_line, QAPISchema
from qapi.types import gen_types
from qapi.visit import gen_visit
from qapi.commands import gen_commands
from qapi.events import gen_events
from qapi.introspect import gen_introspect
from qapi.doc import gen_doc


def main(argv):
    (input_file, output_dir, prefix, opts) = \
        parse_command_line('bu', ['builtins', 'unmask-non-abi-names'])

    opt_builtins = False
    opt_unmask = False

    for o, a in opts:
        if o in ('-b', '--builtins'):
            opt_builtins = True
        if o in ('-u', '--unmask-non-abi-names'):
            opt_unmask = True

    schema = QAPISchema(input_file)

    gen_types(schema, output_dir, prefix, opt_builtins)
    gen_visit(schema, output_dir, prefix, opt_builtins)
    gen_commands(schema, output_dir, prefix)
    gen_events(schema, output_dir, prefix)
    gen_introspect(schema, output_dir, prefix, opt_unmask)
    gen_doc(schema, output_dir, prefix)


if __name__ == '__main__':
    main(sys.argv)