接收用户输入,对输入进行必要的校验和重试
| 25 | logger = logging.getLogger(__name__) |
| 26 | |
| 27 | class UserInput(object): |
| 28 | """ |
| 29 | 接收用户输入,对输入进行必要的校验和重试 |
| 30 | """ |
| 31 | def __format_language_name(self, input_name): |
| 32 | """ |
| 33 | 格式为server支持的语言名称;如果不支持,返回None |
| 34 | """ |
| 35 | # 先转换成小写 |
| 36 | lowcase_name = input_name.lower() |
| 37 | for key, value in LanguageType.LANGUAGE_DICT.items(): |
| 38 | if lowcase_name in value['user_input']: |
| 39 | return value['server_name'] |
| 40 | # 不支持的语言类型,返回None |
| 41 | return None |
| 42 | |
| 43 | def format_languages(self, language_str): |
| 44 | """ |
| 45 | 将输入的语言字符串转换为list,并判断是否是支持的语言类型.如果不支持,抛异常 |
| 46 | :param language_str: 语言类型字符串,以英文逗号或分号分隔 |
| 47 | :return: <list> |
| 48 | """ |
| 49 | # 先转换str为list |
| 50 | language_list = StringMgr.str_to_list(language_str) |
| 51 | format_languages = [] |
| 52 | for language in language_list: |
| 53 | format_name = self.__format_language_name(language) |
| 54 | if format_name: |
| 55 | format_languages.append(format_name) |
| 56 | else: |
| 57 | message = "不支持的语言类型: %s" % language |
| 58 | logger.error(message) |
| 59 | raise NodeError(code=errcode.E_NODE_TASK_CONFIG, msg=message) |
| 60 | # self._languages 重新赋值,使用标准拼写的语言类型 |
| 61 | return list(set(format_languages)) |
| 62 | |
| 63 | def __get_local_scm_info(self, source_dir, scm_type): |
| 64 | """ |
| 65 | 获取本地代码库的scm info |
| 66 | :param source_dir: 本地代码目录 |
| 67 | :param scm_type: scm类型 |
| 68 | :return: scm info | 如果获取失败,返回None |
| 69 | """ |
| 70 | try: |
| 71 | scm_info = ScmClient(scm_type=scm_type, |
| 72 | scm_url="", |
| 73 | source_dir=source_dir, |
| 74 | scm_username="", |
| 75 | scm_password="").info() |
| 76 | return scm_info |
| 77 | except Exception as err: |
| 78 | logger.warning(str(err)) |
| 79 | return None |
| 80 | |
| 81 | def get_remote_scm_info(self, scm_type, scm_url, source_dir, username=None, password=None): |
| 82 | """ |
| 83 | 获取远程代码仓库的scm info信息(需要用户名密码权限) |
| 84 | :param scm_type: |
no outgoing calls
no test coverage detected