мини фиксы

This commit is contained in:
Artem Tsyrulnikov
2026-02-18 20:21:38 +03:00
parent 189a4634e3
commit e48cd7bccc
8 changed files with 37 additions and 40 deletions

View File

@@ -1,30 +1,39 @@
import logging
import os
import subprocess
import sys
import pydantic
from pydantic.fields import Field
from .console_formatter import ColoredConsoleFormatter
from .json_formatter import JSONFormatter
def get_git_commit() -> str:
if commit := os.getenv('GIT_COMMIT'):
return commit
try:
return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'], text=True).strip()
except Exception:
return 'unknown'
class LoggerConfig(pydantic.BaseModel):
APP_NAME: str
APP_VERSION: str = Field(default_factory=get_git_commit)
APP_VERSION: str
LEVEL: int = logging.INFO
PRETTY_CONSOLE: bool = False
@pydantic.field_validator('APP_VERSION')
@classmethod
def normalize_app_version(cls, v: str) -> str:
parts = v.removeprefix('v').split('.')
if len(parts) < 2 or any(not part.isdigit() for part in parts):
raise ValueError('APP_VERSION must look like 1.2.0')
commit_count = _get_git_commit_count()
if not commit_count:
return f'v{".".join(parts)}'
parts[-1] = commit_count
return f'v{".".join(parts)}'
def _get_git_commit_count() -> str | None:
commit_count = os.getenv('GIT_COMMIT_COUNT')
if commit_count is None:
return None
normalized = commit_count.strip()
return normalized or None
def init(config: LoggerConfig) -> None:
root_logger = logging.getLogger()