Skip to content

Commit

Permalink
Add backend methods for process own arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
ameharoo committed Sep 1, 2024
1 parent 6e9d730 commit b7c4083
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
17 changes: 17 additions & 0 deletions backend.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import argparse
import inspect
import os
import pkgutil
Expand Down Expand Up @@ -33,6 +34,12 @@ def __init__(self):

self.register_implementations()

def get_arguments() -> argparse.ArgumentParser:
return argparse.ArgumentParser(add_help=False)

def process_arguments(self, args=dict[str, str]):
pass

def register_implementations(self):
self.implementations = self.get_implementations()

Expand Down Expand Up @@ -106,6 +113,16 @@ class CppBackend(Backend):
name = "cpp"
path_to_templates = "cpp/"
builtin_messages = ["Int8", "Int16", "Int32", "Int64"]
use_highlevel_api = False

@classmethod
def get_arguments(cls) -> argparse.ArgumentParser:
parser = super().get_arguments()
parser.add_argument('-hl', '--highlevel-api', help="Enable highlevel API", action='store_true')
return parser

def process_arguments(self, args):
self.use_highlevel_api = args['highlevel_api']

def render_message(self, message: messages_base.Message):
return super().render_message(message)
Expand Down
13 changes: 11 additions & 2 deletions mess.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import argparse
import inspect
import sys

from generator import Generator
import backend
Expand All @@ -13,7 +14,14 @@
continue
backends[klass.name] = klass

parser = argparse.ArgumentParser(description="Optional app description")
# Trick for add backend specific arguments
parser_parents = []
if len(sys.argv) > 1:
cur_backend = backends.get(sys.argv[1], None)
if cur_backend is not None:
parser_parents.append(cur_backend.get_arguments())

parser = argparse.ArgumentParser(description="Optional app description", parents=parser_parents)

# Required positional argument
parser.add_argument("backend", type=str, help="Backend, one from the list", choices=backends.keys())
Expand All @@ -24,7 +32,8 @@
args = vars(parser.parse_args())

selected_backend = backends[args["backend"]]()
generator = Generator(selected_backend)
selected_backend.process_arguments(args)

generator = Generator(selected_backend)
generator.load_file(args["in"])
generator.write_to_file(args["out"])

0 comments on commit b7c4083

Please sign in to comment.