50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
from jinja2 import Environment, FileSystemLoader
|
|
|
|
from heroserver.openrpc.model.openrpc_spec import OpenRPCSpec
|
|
|
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
env = Environment(loader=FileSystemLoader(script_dir))
|
|
|
|
|
|
class ServerGenerator:
|
|
def __init__(self, spec: OpenRPCSpec, dir: Path):
|
|
self.spec = spec
|
|
self.dir = dir
|
|
|
|
self.server_template = env.get_template("templates/server.jinja")
|
|
|
|
def generate(self):
|
|
self.dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
self.generate_server()
|
|
self.generate_models()
|
|
self.generate_methods()
|
|
|
|
def generate_server(self):
|
|
code = self.server_template.render()
|
|
server_file_path = self.dir.joinpath("server.v")
|
|
|
|
with open(server_file_path, "w") as file:
|
|
file.write(f"{code}")
|
|
|
|
def generate_models():
|
|
pass
|
|
|
|
def generate_methods():
|
|
pass
|
|
|
|
|
|
if __name__ == "__main__":
|
|
from heroserver.openrpc.parser.parser import parser
|
|
|
|
# from heroserver.openrpc.generator.model_generator import ModelGenerator
|
|
|
|
data = parser(path="/root/code/git.threefold.info/hero_server/generatorexamples/mycelium_openrpc.yaml")
|
|
|
|
spec_object = OpenRPCSpec.load(data)
|
|
server_generator = ServerGenerator(spec_object, Path("/tmp/server3"))
|
|
server_generator.generate()
|