Source code for oi_cli2.utils.analyze

from typing import List

# Analyze 是紧密依赖 不采用依赖注入?
from oi_cli2.model.Analyze import Analyze
# 依赖注入
from oi_cli2.utils.db import JsonFileDB
# 静态配置
from oi_cli2.utils.consts.ids import Ids


[docs]class AnalyzeManager: def __init__(self, db: JsonFileDB): self.db = db self.keys = ['platform', 'alias', 'path', 'compilation', 'execute', 'clean', 'default'] def _get_analyze_list(self) -> List[Analyze]: analyze_list: List[dict] = self.db.load(Ids.analyze) or [] return list(map(lambda d: Analyze().dict_init(d), analyze_list)) def _set_analyze_list(self, analyze_list: List[Analyze]): analyze_list.sort(key=lambda temp0: (temp0.platform, -temp0.default, temp0.template_alias)) self.db.save(Ids.analyze, list(map(lambda d: d.__dict__, analyze_list)))
[docs] def get_list(self) -> List[Analyze]: return self._get_analyze_list()
[docs] def set_default(self, index: int): analyze_list: List[Analyze] = self._get_analyze_list() assert 0 <= index < len(analyze_list) for i in range(len(analyze_list)): if i == index: analyze_list[i].default = True elif analyze_list[i].platform == analyze_list[index].platform: analyze_list[i].default = False self._set_analyze_list(analyze_list)
[docs] def delete_analyze(self, index): analyze_list: List[Analyze] = self._get_analyze_list() assert 0 <= index < len(analyze_list) if analyze_list[index].default: for i in range(len(analyze_list)): if i == index: continue if analyze_list[i].platform == analyze_list[index].platform: analyze_list[i].default = True break del analyze_list[index] self._set_analyze_list(analyze_list)
# set default if no platform there
[docs] def add_analyze(self, platform, submit_lang, template_alias, class_path): analyze_list: List[Analyze] = self._get_analyze_list() is_default = True for item in analyze_list: if item.platform == platform and item.default: is_default = False break analyze_list.append(Analyze().initial(platform, submit_lang, template_alias, class_path, default=is_default)) self._set_analyze_list(analyze_list)
[docs] def modify_submit_lang(self, index: int, value: str): analyze_list: List[Analyze] = self._get_analyze_list() assert 0 <= index < len(analyze_list) analyze_list[index].submit_lang = value self._set_analyze_list(analyze_list)
[docs] def modify_template_alias(self, index: int, value: str): analyze_list: List[Analyze] = self._get_analyze_list() assert 0 <= index < len(analyze_list) analyze_list[index].template_alias = value self._set_analyze_list(analyze_list)
[docs] def modify_class_path(self, index: int, value: str): # 实例class 文件 analyze_list: List[Analyze] = self._get_analyze_list() assert 0 <= index < len(analyze_list) analyze_list[index].class_path = value self._set_analyze_list(analyze_list)