def _get_param_def_from_line()

in modular_api/commands_generator.py [0:0]


def _get_param_def_from_line(line):
    if '\'\'' in line:
        line = line.replace('\'\'', '')
    split = [line for line in line.split('\'') if line]
    param_name = None
    param_doc = None
    alias_name = None
    param_type = 'str'
    is_flag = False
    is_path_to_file = False
    file_extension = None
    for index, part in enumerate(split):
        # todo this all does not seem right...
        if any(i in part for i in FILE_CHECKS_CALLBACKS):
            is_path_to_file = True
            match = re.search(ALLOWED_EXTENSIONS_PATTERN, line)
            if match:
                allowed_extensions = match.group().split(', ')
                file_extension = [extension.strip("\"'")
                                  for extension in allowed_extensions]
        if re.match(r'^--[a-z]', part):
            param_name = str(part).replace('--', '')
        if re.match(r'^-[a-zA-z]', part):
            alias_name = str(part).replace('-', '')
        if 'help=' in part:
            param_doc = str(split[index + 1])
            param_doc = param_doc.replace('*', '').strip() \
                if '*' in param_doc \
                else param_doc
        if 'is_flag' in part:
            param_type = 'bool'
            is_flag = True
        if 'type' in part:
            click_type = part.split('type=', 1)[-1].split(',')[0]
            if 'Choice' in click_type:
                click_type = 'enum'
            if 'IntRange' in click_type or 'float' in click_type:
                click_type = 'num'
            if click_type not in ['list', 'str', 'bool', 'enum', 'num']:
                click_type = 'str'
            param_type = click_type
            if 'multiple' in part:
                param_type = 'list'

    param_required = any(i in line for i in REQUIRED_PARAM_CALLBACKS)
    response = {
        'name': param_name,
        'alias': alias_name,
        'required': param_required,
        'description': param_doc,
        'type': param_type,
        'is_flag': is_flag
    }
    if is_path_to_file:
        response['convert_content_to_file'] = is_path_to_file
    if file_extension:
        response['temp_file_extension'] = file_extension
    return response