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
@@ -0,0 +1,4 @@
__all__ = ["ArgParse"]
from argenta.orchestrator.argparse.entity import ArgParse
@@ -1,6 +1,6 @@
__all__ = ["BooleanArgument", "PositionalArgument", "OptionalArgument"]
from argenta.orchestrator.arguments.models import (BooleanArgument,
PositionalArgument,
OptionalArgument)
from argenta.orchestrator.argparse.arguments.models import (BooleanArgument,
PositionalArgument,
OptionalArgument)
@@ -25,7 +25,7 @@ class PositionalArgument(BaseArgument):
class OptionalArgument(BaseArgument):
def __init__(self, name: str, prefix: Literal['-', '--', '---']):
def __init__(self, name: str, prefix: Literal['-', '--', '---'] = '--'):
"""
Optional argument, must have the value
:param name: name of the argument
@@ -39,12 +39,14 @@ class OptionalArgument(BaseArgument):
class BooleanArgument(BaseArgument):
def __init__(self, name: str):
def __init__(self, name: str, prefix: Literal['-', '--', '---'] = '--'):
"""
Boolean argument, does not require a 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.name
return self.prefix + self.name
+43 -1
View File
@@ -1,4 +1,46 @@
from argparse import ArgumentParser
from argenta.orchestrator.argparse.arguments.models import (BooleanArgument,
OptionalArgument,
PositionalArgument)
class ArgParse:
def __init__(self, name: str, description: str):
def __init__(self, name: str = 'Argenta',
description: str = 'Argenta available arguments',
epilog: str = 'github.com/koloideal/Argenta | made by kolo',
args: list[PositionalArgument | OptionalArgument | BooleanArgument] = None) -> None:
"""
Cmd argument parser and configurator at startup
:param name: the name of the ArgParse instance
:param description: the description of the ArgParse instance
:param epilog: the epilog of the ArgParse instance
:param args: registered and processed arguments
"""
self.name = name
self.description = description
self.epilog = epilog
self.entity = ArgumentParser(prog=name, description=description, epilog=epilog)
self.args: list[PositionalArgument | OptionalArgument | BooleanArgument] | None = args
def set_args(self, *args: PositionalArgument | OptionalArgument | BooleanArgument):
"""
Sets the arguments to be processed
:param args: processed arguments
:return:
"""
self.args.extend(args)
def register_args(self):
"""
Registers initialized command line arguments
:return:
"""
for arg in self.args:
if type(arg) is PositionalArgument:
self.entity.add_argument(arg.get_string_entity())
elif type(arg) is OptionalArgument:
self.entity.add_argument(arg.get_string_entity())
elif type(arg) is BooleanArgument:
self.entity.add_argument(arg.get_string_entity(), action='store_true')