Skip to content

Commit 2d80dda

Browse files
authored
Move from sys.argv to argparse (#6)
1 parent 981f772 commit 2d80dda

File tree

1 file changed

+88
-35
lines changed

1 file changed

+88
-35
lines changed

gen_definitions.py

Lines changed: 88 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import os.path
1111
import re
1212
import stat
13-
import sys
13+
import argparse
1414
import uuid
1515
import os
1616
from typing import Iterable, NamedTuple, Dict, List, Set, Sequence, TypeVar, Union, Any
@@ -1930,41 +1930,94 @@ def quoted_presenter(dumper, data):
19301930

19311931

19321932
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+
19332017
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)
19682021

19692022

19702023
if __name__ == "__main__":

0 commit comments

Comments
 (0)