31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
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
|