Improved argument parsing
This commit is contained in:
30
src/cpl_core/configuration/argument_builder.py
Normal file
30
src/cpl_core/configuration/argument_builder.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from typing import Union
|
||||
|
||||
from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum
|
||||
from cpl_core.configuration.executable_argument import ExecutableArgument
|
||||
from cpl_core.configuration.flag_argument import FlagArgument
|
||||
from cpl_core.configuration.variable_argument import VariableArgument
|
||||
from cpl_core.console import Console
|
||||
|
||||
|
||||
class ArgumentBuilder:
|
||||
|
||||
@staticmethod
|
||||
def build_argument(arg_type: ArgumentTypeEnum, *args, **kwargs) -> Union[
|
||||
ExecutableArgument, FlagArgument, VariableArgument]:
|
||||
argument = None
|
||||
try:
|
||||
match arg_type:
|
||||
case ArgumentTypeEnum.Flag:
|
||||
argument = FlagArgument(*args, **kwargs)
|
||||
case ArgumentTypeEnum.Executable:
|
||||
argument = ExecutableArgument(*args, **kwargs)
|
||||
case ArgumentTypeEnum.Variable:
|
||||
argument = VariableArgument(*args, **kwargs)
|
||||
case _:
|
||||
Console.error('Invalid argument type')
|
||||
Console.close()
|
||||
except TypeError as e:
|
||||
Console.error(str(e))
|
||||
Console.close()
|
||||
return argument
|
||||
Reference in New Issue
Block a user