/
Paff
/
declarant
Обзор
Документация
Войти
/
Paff
/
declarant
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
version.py
45 строк
1 KB
1pash1985-gif
feat(gui): add 'О программе' button with git version display
21 июл 2026, 21:27
21 июл 2026, 21:27
e69799e
Код
Авторство
О чём код?
# -*- coding: utf-8 -*- """Определение версии приложения из git.""" from __future__ import annotations import subprocess from pathlib import Path _CACHE: dict[str, str] = {} def get_version() -> str: """Вернуть строку вида 'v3f25b50 (2026-07-01)' или 'dev' если git недоступен.""" if 'ver' in _CACHE: return _CACHE['ver'] ver = _read_git_version() or _read_version_file() or 'dev' _CACHE['ver'] = ver return ver def _read_git_version() -> str: """Попытаться получить версию из git.""" try: repo_dir = Path(__file__).resolve().parent result = subprocess.run( ['git', 'log', '-1', '--format=%h (%cs)'], capture_output=True, text=True, timeout=5, cwd=str(repo_dir), ) if result.returncode == 0 and result.stdout.strip(): return f'v{result.stdout.strip()}' except Exception: pass return '' def _read_version_file() -> str: """Фоллбек: прочитать VERSION файл (для сборки в exe).""" try: vf = Path(__file__).resolve().parent / 'VERSION' if vf.exists(): return vf.read_text(encoding='utf-8').strip() except Exception: pass return ''