mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 18:15:28 +03:00
work on support args
This commit is contained in:
@@ -44,9 +44,10 @@ from routers import router
|
|||||||
|
|
||||||
app: App = App()
|
app: App = App()
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ class AppSetups(AppValidators, AppPrinters):
|
|||||||
|
|
||||||
|
|
||||||
class App(AppSetters, AppNonStandardHandlers, AppSetups):
|
class App(AppSetters, AppNonStandardHandlers, AppSetups):
|
||||||
def start_polling(self) -> None:
|
def run_polling(self) -> None:
|
||||||
self._pre_cycle_setup()
|
self._pre_cycle_setup()
|
||||||
while True:
|
while True:
|
||||||
if self._repeat_command_groups_description:
|
if self._repeat_command_groups_description:
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
__all__ = ["Orchestrator"]
|
||||||
|
|
||||||
|
|
||||||
|
from argenta.orchestrator.entity import Orchestrator
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
__all__ = ["BooleanArgument", "PositionalArgument", "OptionalArgument"]
|
||||||
|
|
||||||
|
|
||||||
|
from argenta.orchestrator.arguments.models import (BooleanArgument,
|
||||||
|
PositionalArgument,
|
||||||
|
OptionalArgument)
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
from abc import ABC, abstractmethod
|
||||||
|
from typing import Literal
|
||||||
|
|
||||||
|
|
||||||
|
class BaseArgument(ABC):
|
||||||
|
@abstractmethod
|
||||||
|
def get_string_entity(self):
|
||||||
|
"""
|
||||||
|
Returns the string representation of the argument
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class PositionalArgument(BaseArgument):
|
||||||
|
def __init__(self, name: str):
|
||||||
|
"""
|
||||||
|
Required argument at startup
|
||||||
|
:param name: name of the argument, must not start with minus (-)
|
||||||
|
"""
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
def get_string_entity(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
class OptionalArgument(BaseArgument):
|
||||||
|
def __init__(self, name: str, prefix: Literal['-', '--', '---']):
|
||||||
|
"""
|
||||||
|
Optional argument, must have the value
|
||||||
|
:param name: name of the argument
|
||||||
|
:param prefix: prefix of the argument
|
||||||
|
"""
|
||||||
|
self.name = name
|
||||||
|
self.prefix = prefix
|
||||||
|
|
||||||
|
def get_string_entity(self):
|
||||||
|
return self.prefix + self.name
|
||||||
|
|
||||||
|
|
||||||
|
class BooleanArgument(BaseArgument):
|
||||||
|
def __init__(self, name: str):
|
||||||
|
"""
|
||||||
|
Boolean argument, does not require a value
|
||||||
|
:param name: name of the argument
|
||||||
|
"""
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
def get_string_entity(self):
|
||||||
|
return self.name
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
class ArgParse:
|
||||||
|
def __init__(self, name: str, description: str):
|
||||||
|
self.name = name
|
||||||
|
self.description = description
|
||||||
@@ -1,2 +1,43 @@
|
|||||||
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
|
from argenta.app import App
|
||||||
|
from argenta.orchestrator.argparse.arguments import (PositionalArgument,
|
||||||
|
OptionalArgument,
|
||||||
|
BooleanArgument)
|
||||||
|
|
||||||
|
|
||||||
class Orchestrator:
|
class Orchestrator:
|
||||||
pass
|
def __init__(self, *args: PositionalArgument | OptionalArgument | BooleanArgument):
|
||||||
|
"""
|
||||||
|
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
|
||||||
|
"""
|
||||||
|
self.args = args
|
||||||
|
self.argparse: ArgumentParser = ArgumentParser()
|
||||||
|
self._register_args()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def start_polling(app: App) -> None:
|
||||||
|
"""
|
||||||
|
Starting the user input processing cycle
|
||||||
|
:param app: a running application
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
app.run_polling()
|
||||||
|
|
||||||
|
def get_args(self):
|
||||||
|
return self.argparse.parse_args()
|
||||||
|
|
||||||
|
def _register_args(self):
|
||||||
|
"""
|
||||||
|
Registers initialized command line arguments
|
||||||
|
: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')
|
||||||
|
|
||||||
@@ -6,4 +6,4 @@ app = App(repeat_command_groups=True)
|
|||||||
|
|
||||||
app.add_message_on_startup(PredeterminedMessages.USAGE + '\n\n')
|
app.add_message_on_startup(PredeterminedMessages.USAGE + '\n\n')
|
||||||
|
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|||||||
@@ -4,11 +4,15 @@ from argenta.app import App
|
|||||||
from argenta.app.defaults import PredeterminedMessages
|
from argenta.app.defaults import PredeterminedMessages
|
||||||
from argenta.app.dividing_line import DynamicDividingLine
|
from argenta.app.dividing_line import DynamicDividingLine
|
||||||
from argenta.app.autocompleter import AutoCompleter
|
from argenta.app.autocompleter import AutoCompleter
|
||||||
|
from argenta.orchestrator import Orchestrator
|
||||||
|
from argenta.orchestrator.argparse.arguments import (PositionalArgument,
|
||||||
|
OptionalArgument,
|
||||||
|
BooleanArgument)
|
||||||
|
|
||||||
|
|
||||||
autocompleter = AutoCompleter('./mock/.hist')
|
|
||||||
app: App = App(dividing_line=DynamicDividingLine(),
|
app: App = App(dividing_line=DynamicDividingLine(),
|
||||||
autocompleter=autocompleter)
|
autocompleter=AutoCompleter('./mock/.hist'))
|
||||||
|
orchestrator: Orchestrator = Orchestrator(PositionalArgument('name'))
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@@ -18,7 +22,8 @@ def main():
|
|||||||
app.add_message_on_startup(PredeterminedMessages.AUTOCOMPLETE)
|
app.add_message_on_startup(PredeterminedMessages.AUTOCOMPLETE)
|
||||||
app.add_message_on_startup(PredeterminedMessages.HELP)
|
app.add_message_on_startup(PredeterminedMessages.HELP)
|
||||||
|
|
||||||
app.start_polling()
|
print(orchestrator.get_args())
|
||||||
|
#orchestrator.start_polling(app)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}'))
|
app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}'))
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}'))
|
app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}'))
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}'))
|
app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}'))
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}'))
|
app.set_unknown_command_handler(lambda command: print(f'Unknown command: {command.get_trigger()}'))
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -169,7 +169,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.set_invalid_input_flags_handler(lambda command: print(f'Incorrect flag syntax: "{command}"'))
|
app.set_invalid_input_flags_handler(lambda command: print(f'Incorrect flag syntax: "{command}"'))
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -189,7 +189,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.set_empty_command_handler(lambda: print('Empty input command'))
|
app.set_empty_command_handler(lambda: print('Empty input command'))
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -209,7 +209,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.set_repeated_input_flags_handler(lambda command: print(f'Repeated input flags: "{command}"'))
|
app.set_repeated_input_flags_handler(lambda command: print(f'Repeated input flags: "{command}"'))
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
override_system_messages=True,
|
override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -165,7 +165,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
@@ -215,7 +215,7 @@ class TestSystemHandlerNormalWork(unittest.TestCase):
|
|||||||
app = App(override_system_messages=True,
|
app = App(override_system_messages=True,
|
||||||
print_func=print)
|
print_func=print)
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.start_polling()
|
app.run_polling()
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user