Files
gobot/gobotrpc/generator/main.py

44 lines
1.2 KiB (Stored with Git LFS)
Python

from src.defintion_input import parse_package_input, parse_enum_inputs
from src.backend.cpp.render import cpp_render_enums, cpp_render_package_structs, cpp_render_util_fn, cpp_render_cmake
import os
import jinja2
from src.util import create_directory_path
TEMPLATE_DIR = "generator/templates"
OUTPUT_DIR = "out"
if __name__ == "__main__":
create_directory_path(TEMPLATE_DIR)
create_directory_path(OUTPUT_DIR)
jinja_env = jinja2.Environment(
loader=jinja2.FileSystemLoader([TEMPLATE_DIR]),
autoescape=jinja2.select_autoescape()
)
enum_dict = parse_enum_inputs("docs/Gobot RPC Defintion.ods")
packages_list = parse_package_input("docs/Gobot RPC Defintion.ods", enum_dict)
cpp_render_enums(
enum_dict.values(),
"GOBOTRPC", os.path.join(OUTPUT_DIR, "cpp", "include"),
jinja_env
)
cpp_render_package_structs(
packages_list,
"GOBOTRPC", os.path.join(OUTPUT_DIR, "cpp", "include"),
jinja_env
)
cpp_render_util_fn(
packages_list,
"GOBOTRPC", os.path.join(OUTPUT_DIR, "cpp", "src"),
jinja_env
)
cpp_render_cmake(
os.path.join(OUTPUT_DIR, "cpp"),
jinja_env
)