Улучшение cli и удобства создания патчей
Сборка мода / build (push) Successful in 2m16s

This commit is contained in:
2025-12-28 17:47:56 +03:00
parent ec047cd3a5
commit 70337ee3ec
35 changed files with 2200 additions and 1111 deletions
+21 -16
View File
@@ -4,7 +4,7 @@
Каждый патч должен независеть от других патчей и проверять себя при применении. Он не должен вернуть True, если есть проблемы.
На данный момент каждый патч должен иметь функцию `apply`, которая принимает на вход конфигурацию и возвращает True или False.
И модель `Config`, которая наследуется от `PatchConfig` (поле `enabled` добавлять не нужно).
И модель `Config`, которая наследуется от `PatchTemplate` (поле `enabled` добавлять не нужно).
Это позволяет упростить конфигурирование и проверять типы данных, и делать значения по умолчанию.
При успешном применении патча, функция apply должна вернуть True, иначе False.
Ошибка будет интерпретирована как False. С выводом ошибки в консоль.
@@ -25,24 +25,29 @@ python ./main.py build --verbose
}
"""
priority = 0 # Приоритет патча, чем выше, тем раньше он будет применен
__author__ = "wowlikon <wowlikon@gmail.com>"
__version__ = "1.0.0"
from typing import Any, Dict, List
# imports
from tqdm import tqdm
from typing import Dict, List, Any
from pydantic import Field
from tqdm import tqdm
from utils.config import PatchConfig
from utils.config import PatchTemplate
#Config
class Config(PatchConfig):
class Patch(PatchTemplate):
example: bool = Field(True, description="Пример кастомного параметра")
# Patch
def apply(config: Config, base: Dict[str, Any]) -> bool: # Анотации типов для удобства, читаемости и поддержки IDE
tqdm.write("Вывод информации через tqdm, чтобы не мешать прогресс-бару")
tqdm.write("Пример включен" if config.example else "Пример отключен")
if base["verbose"]:
tqdm.write("Для вывода подробной и отладочной информации используйте флаг --verbose")
return True
def apply(
self, base: Dict[str, Any]
) -> bool: # Анотации типов для удобства, читаемости и поддержки IDE
priority: int = Field(
frozen=True, exclude=True, default=0
) # Приоритет патча, чем выше, тем раньше он будет применен
tqdm.write("Вывод информации через tqdm, чтобы не мешать прогресс-бару")
tqdm.write("Пример включен" if self.example else "Пример отключен")
if base["verbose"]:
tqdm.write(
"Для вывода подробной и отладочной информации используйте флаг --verbose"
)
return True