From 2ab2061cc90d146072ad1dfe5083ac03f7cb3799 Mon Sep 17 00:00:00 2001 From: Vincenzo Palazzo Date: Tue, 26 Apr 2022 11:18:04 +0200 Subject: [PATCH] msggen: adding example and fixes typo Signed-off-by: Vincenzo Palazzo --- contrib/msggen/examples/generator_example.py | 37 ++++++++++++++++++++ contrib/msggen/msggen/__main__.py | 8 ++--- contrib/msggen/msggen/gen/generator.py | 4 +-- 3 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 contrib/msggen/examples/generator_example.py diff --git a/contrib/msggen/examples/generator_example.py b/contrib/msggen/examples/generator_example.py new file mode 100644 index 000000000000..96466e0ac657 --- /dev/null +++ b/contrib/msggen/examples/generator_example.py @@ -0,0 +1,37 @@ +#! /usr/bin/python3 +""" +Example of usage msggen module. + +This example introduces a fake generator to understand how the +package works, If you would like to see a real generator example +try to see the Rust generator in the `msggen/gen/rust.py` + +author: https://github.com/vincenzopalazzo +""" +from msggen.gen.generator import GeneratorChain, IGenerator +from msggen import Service +from msggen.utils import load_jsonrpc_service + + +class MonkylangGen(IGenerator): + """This is the custom generator that implements a monkylang generator + that uses the interface handler IGenerator.""" + + def generate(self, service: Service): + self.write('println("Monky")') + + +def register_monkylang_gen(generator_chain: GeneratorChain): + """Helper function to register the custom generator, and + load the correct path of the json schema.""" + file = '' + dest = open(file, 'w') + generator_chain.add_generator(MonkylangGen(dest)) + + +if __name__ == '__main__': + schema_dir = '' + service = load_jsonrpc_service(schema_dir=schema_dir) + generator_chain = GeneratorChain() + register_monkylang_gen(generator_chain) + generator_chain.generate(service) diff --git a/contrib/msggen/msggen/__main__.py b/contrib/msggen/msggen/__main__.py index e04b37c99c80..1bb345dac999 100644 --- a/contrib/msggen/msggen/__main__.py +++ b/contrib/msggen/msggen/__main__.py @@ -5,7 +5,7 @@ from msggen.utils import repo_root, load_jsonrpc_service -def gengrpc(generator_chain: GeneratorChain, meta): +def add_handler_gen_grpc(generator_chain: GeneratorChain, meta): """Load all mapped RPC methods, wrap them in a Service, and split them into messages. """ fname = repo_root() / "cln-grpc" / "proto" / "node.proto" @@ -22,7 +22,7 @@ def gengrpc(generator_chain: GeneratorChain, meta): generator_chain.add_generator(GrpcServerGenerator(dest)) -def genrustjsonrpc(generator_chain: GeneratorChain): +def add_handler_gen_rust_jsonrpc(generator_chain: GeneratorChain): fname = repo_root() / "cln-rpc" / "src" / "model.rs" dest = open(fname, "w") generator_chain.add_generator(RustGenerator(dest)) @@ -43,8 +43,8 @@ def run(): meta = load_msggen_meta() generator_chain = GeneratorChain() - gengrpc(generator_chain, meta) - genrustjsonrpc(generator_chain) + add_handler_gen_grpc(generator_chain, meta) + add_handler_gen_rust_jsonrpc(generator_chain) generator_chain.generate(service) diff --git a/contrib/msggen/msggen/gen/generator.py b/contrib/msggen/msggen/gen/generator.py index e4123ce19d81..052ddcbb0f83 100644 --- a/contrib/msggen/msggen/gen/generator.py +++ b/contrib/msggen/msggen/gen/generator.py @@ -10,7 +10,7 @@ class IGenerator(ABC): """ - Change of responsibility handler that need to be + Chain of responsibility handler that need to be implemented by all the generators. """ @@ -21,7 +21,7 @@ def generate(self, service: Service): class GeneratorChain: """ - Chain responsibility patter implementation to generalize + Chain responsibility pattern implementation to generalize the generation method. """