|
10 | 10 | import os.path |
11 | 11 | import re |
12 | 12 | import stat |
13 | | -import sys |
| 13 | +import argparse |
14 | 14 | import uuid |
15 | 15 | import os |
16 | 16 | from typing import Iterable, NamedTuple, Dict, List, Set, Sequence, TypeVar, Union, Any |
@@ -1930,41 +1930,94 @@ def quoted_presenter(dumper, data): |
1930 | 1930 |
|
1931 | 1931 |
|
1932 | 1932 | def main(): |
| 1933 | + argparser = argparse.ArgumentParser(description="Process LSL definitions.") |
| 1934 | + argparser.add_argument("definitions", help="Path to the LSL definition yaml") |
| 1935 | + |
| 1936 | + subparsers = argparser.add_subparsers(dest="mode", required=True) |
| 1937 | + |
| 1938 | + sub = subparsers.add_parser("syntax") |
| 1939 | + sub.add_argument("filename") |
| 1940 | + sub.set_defaults(func=lambda args, defs: _write_if_different(args.filename, dump_syntax(defs))) |
| 1941 | + |
| 1942 | + sub = subparsers.add_parser("gen_constant_lsl_script") |
| 1943 | + sub.set_defaults(func=lambda args, defs: gen_constant_lsl_script(defs)) |
| 1944 | + |
| 1945 | + sub = subparsers.add_parser("gen_lexer_file") |
| 1946 | + sub.add_argument("template_file") |
| 1947 | + sub.add_argument("output_file") |
| 1948 | + sub.set_defaults( |
| 1949 | + func=lambda args, defs: gen_lexer_file(defs, args.template_file, args.output_file) |
| 1950 | + ) |
| 1951 | + |
| 1952 | + sub = subparsers.add_parser("gen_parser_file") |
| 1953 | + sub.add_argument("template_file") |
| 1954 | + sub.add_argument("output_file") |
| 1955 | + sub.set_defaults( |
| 1956 | + func=lambda args, defs: gen_parser_file(defs, args.template_file, args.output_file) |
| 1957 | + ) |
| 1958 | + |
| 1959 | + sub = subparsers.add_parser("gen_tree_header_file") |
| 1960 | + sub.add_argument("output_file") |
| 1961 | + sub.set_defaults(func=lambda args, defs: gen_tree_header_file(defs, args.output_file)) |
| 1962 | + |
| 1963 | + sub = subparsers.add_parser("gen_tree_source_file") |
| 1964 | + sub.add_argument("output_file") |
| 1965 | + sub.set_defaults(func=lambda args, defs: gen_tree_source_file(defs, args.output_file)) |
| 1966 | + |
| 1967 | + sub = subparsers.add_parser("gen_cpp_constants") |
| 1968 | + sub.add_argument("output_file") |
| 1969 | + sub.set_defaults(func=lambda args, defs: gen_cpp_constants(defs, args.output_file)) |
| 1970 | + |
| 1971 | + sub = subparsers.add_parser("gen_func_call_scripts") |
| 1972 | + sub.add_argument("output_path") |
| 1973 | + sub.set_defaults(func=lambda args, defs: gen_func_call_scripts(defs, args.output_path)) |
| 1974 | + |
| 1975 | + sub = subparsers.add_parser("gen_lscript_library_defs") |
| 1976 | + sub.add_argument("library_path") |
| 1977 | + sub.set_defaults(func=lambda args, defs: gen_lscript_library_defs(defs, args.library_path)) |
| 1978 | + |
| 1979 | + sub = subparsers.add_parser("gen_mono_library_defs") |
| 1980 | + sub.add_argument("library_template_path") |
| 1981 | + sub.add_argument("output_file") |
| 1982 | + sub.set_defaults( |
| 1983 | + func=lambda args, defs: gen_mono_library_defs( |
| 1984 | + defs, args.library_template_path, args.output_file |
| 1985 | + ) |
| 1986 | + ) |
| 1987 | + |
| 1988 | + sub = subparsers.add_parser("gen_lscript_interface") |
| 1989 | + sub.add_argument("lscript_interface_path") |
| 1990 | + sub.set_defaults( |
| 1991 | + func=lambda args, defs: gen_lscript_interface(defs, args.lscript_interface_path) |
| 1992 | + ) |
| 1993 | + |
| 1994 | + sub = subparsers.add_parser("gen_mono_bind_interfaces") |
| 1995 | + sub.add_argument("mono_bind_interfaces_path") |
| 1996 | + sub.set_defaults( |
| 1997 | + func=lambda args, defs: gen_mono_bind_interfaces(defs, args.mono_bind_interfaces_path) |
| 1998 | + ) |
| 1999 | + |
| 2000 | + sub = subparsers.add_parser("gen_lscript_library_bind_pure") |
| 2001 | + sub.add_argument("output_path") |
| 2002 | + sub.set_defaults(func=lambda args, defs: gen_lscript_library_bind_pure(defs, args.output_path)) |
| 2003 | + |
| 2004 | + sub = subparsers.add_parser("gen_builtins_txt") |
| 2005 | + sub.add_argument("output_path") |
| 2006 | + sub.set_defaults(func=lambda args, defs: gen_builtins_txt(defs, args.output_path)) |
| 2007 | + |
| 2008 | + sub = subparsers.add_parser("gen_lua_registrations") |
| 2009 | + sub.add_argument("pure_only", type=int, help="0 or 1") |
| 2010 | + sub.add_argument("output_path") |
| 2011 | + sub.set_defaults( |
| 2012 | + func=lambda args, defs: gen_lua_registrations(defs, bool(args.pure_only), args.output_path) |
| 2013 | + ) |
| 2014 | + |
| 2015 | + args = argparser.parse_args() |
| 2016 | + |
1933 | 2017 | parser = LSLDefinitionParser() |
1934 | | - definitions = parser.parse_file(sys.argv[1]) |
1935 | | - mode = sys.argv[2] |
1936 | | - if mode == "syntax": |
1937 | | - _write_if_different(sys.argv[3], dump_syntax(definitions)) |
1938 | | - elif mode == "gen_constant_lsl_script": |
1939 | | - gen_constant_lsl_script(definitions) |
1940 | | - elif mode == "gen_lexer_file": |
1941 | | - gen_lexer_file(definitions, sys.argv[3], sys.argv[4]) |
1942 | | - elif mode == "gen_parser_file": |
1943 | | - gen_parser_file(definitions, sys.argv[3], sys.argv[4]) |
1944 | | - elif mode == "gen_tree_header_file": |
1945 | | - gen_tree_header_file(definitions, sys.argv[3]) |
1946 | | - elif mode == "gen_tree_source_file": |
1947 | | - gen_tree_source_file(definitions, sys.argv[3]) |
1948 | | - elif mode == "gen_cpp_constants": |
1949 | | - gen_cpp_constants(definitions, sys.argv[3]) |
1950 | | - elif mode == "gen_func_call_scripts": |
1951 | | - gen_func_call_scripts(definitions, sys.argv[3]) |
1952 | | - elif mode == "gen_lscript_library_defs": |
1953 | | - gen_lscript_library_defs(definitions, sys.argv[3]) |
1954 | | - elif mode == "gen_mono_library_defs": |
1955 | | - gen_mono_library_defs(definitions, sys.argv[3], sys.argv[4]) |
1956 | | - elif mode == "gen_lscript_interface": |
1957 | | - gen_lscript_interface(definitions, sys.argv[3]) |
1958 | | - elif mode == "gen_mono_bind_interfaces": |
1959 | | - gen_mono_bind_interfaces(definitions, sys.argv[3]) |
1960 | | - elif mode == "gen_lscript_library_bind_pure": |
1961 | | - gen_lscript_library_bind_pure(definitions, sys.argv[3]) |
1962 | | - elif mode == "gen_builtins_txt": |
1963 | | - gen_builtins_txt(definitions, sys.argv[3]) |
1964 | | - elif mode == "gen_lua_registrations": |
1965 | | - gen_lua_registrations(definitions, bool(int(sys.argv[3])), sys.argv[4]) |
1966 | | - else: |
1967 | | - raise ValueError(f"Unknown mode {mode}") |
| 2018 | + definitions = parser.parse_file(args.definitions) |
| 2019 | + |
| 2020 | + args.func(args, definitions) |
1968 | 2021 |
|
1969 | 2022 |
|
1970 | 2023 | if __name__ == "__main__": |
|
0 commit comments