def process_input_parameters()

in modular_cli/service/request_processor.py [0:0]


def process_input_parameters(token_meta, passed_parameters):
    index = 0
    processed_parameters = {}
    for idx, param in enumerate(passed_parameters):
        if idx < index:
            continue

        existed_param = [parameter for parameter in token_meta['parameters']
                         if f'-{parameter["alias"]}' == param or
                         f'--{parameter["name"]}' == param]
        if not existed_param:
            raise ModularCliBadRequestException(f"No such option: "
                                                  f"\'{param}\'")

        existed_param = existed_param[0]

        param_name = existed_param['name']
        is_bool_param = existed_param['type'] == 'bool'
        is_flag_param = existed_param.get('is_flag')

        # process bool parameter type
        if is_flag_param:
            processed_parameters[param_name] = True
            index += 1
        elif is_bool_param:
            try:
                processed_parameters[param_name] = BOOL_PARAM_MAP.get(
                    passed_parameters[index + 1].lower()
                )
                index += 2
                if not isinstance(processed_parameters[param_name], bool):
                    raise ModularCliBadRequestException(
                        f'Missed value for "{param}" parameter. '
                        f'Bool type expected'
                    )
            except IndexError:
                raise ModularCliBadRequestException(
                    f'Missed value for "{param}" parameter. '
                    f'Bool type expected'
                )
        elif param_name in processed_parameters:
            # process multiple parameter type
            existed_param_value = processed_parameters[param_name]
            if existed_param_value and isinstance(existed_param_value, list):
                processed_parameters[param_name].append(
                    passed_parameters[index + 1]
                )
            else:
                processed_parameters[param_name] = [
                    existed_param_value,
                    passed_parameters[index + 1]
                ]
            index += 2

        else:
            try:
                processed_parameters[existed_param['name']] = passed_parameters[idx+1]
            except IndexError:
                raise ModularCliBadRequestException(
                    f'Missed value for "{param}" parameter'
                )
            index += 2

    return processed_parameters