This commit is contained in:
2025-04-14 01:03:24 +03:00
parent ba035881ee
commit a5fdcab862
7 changed files with 66 additions and 30 deletions
+7 -21
View File
@@ -1,20 +1,15 @@
from argparse import ArgumentParser
from argenta.app import App
from argenta.orchestrator.argparse.arguments import (PositionalArgument,
OptionalArgument,
BooleanArgument)
from argenta.orchestrator.argparse import ArgParse
class Orchestrator:
def __init__(self, *args: PositionalArgument | OptionalArgument | BooleanArgument):
def __init__(self, arg_parser: ArgParse):
"""
An orchestrator and configurator that defines the behavior of an integrated system, one level higher than the App
:param args: logged command line arguments at startup
:param arg_parser: Cmd argument parser and configurator at startup
"""
self.args = args
self.argparse: ArgumentParser = ArgumentParser()
self._register_args()
self.arg_parser: ArgParse = arg_parser
self.arg_parser.register_args()
@staticmethod
def start_polling(app: App) -> None:
@@ -26,18 +21,9 @@ class Orchestrator:
app.run_polling()
def get_args(self):
return self.argparse.parse_args()
def _register_args(self):
"""
Registers initialized command line arguments
Returns the arguments parsed
:return:
"""
for arg in self.args:
if type(arg) is PositionalArgument:
self.argparse.add_argument(arg.get_string_entity())
elif type(arg) is OptionalArgument:
self.argparse.add_argument(arg.get_string_entity())
elif type(arg) is BooleanArgument:
self.argparse.add_argument(arg.get_string_entity(), action='store_const')
return self.arg_parser.entity.parse_args()