Files
vrobbler/vrobbler/context_processors.py
Colin Powell 033239260f
All checks were successful
build / test (push) Successful in 1m57s
[perf] Add caching and lock protections
2026-06-19 13:37:30 -04:00

59 lines
1.6 KiB
Python

import os
import subprocess
from importlib.metadata import version as get_version
from pathlib import Path
_GIT_COMMIT = None
def version_info(request):
global _GIT_COMMIT
try:
app_version = get_version("vrobbler")
except Exception:
app_version = "unknown"
commit = os.environ.get("VROBBLER_COMMIT")
if commit:
return {"app_version": app_version, "git_commit": commit}
if _GIT_COMMIT is not None:
return {"app_version": app_version, "git_commit": _GIT_COMMIT}
try:
from vrobbler._commit import commit as _commit
except ImportError:
pass
else:
if _commit and _commit != "unknown":
_GIT_COMMIT = _commit
return {"app_version": app_version, "git_commit": _GIT_COMMIT}
commit_file = Path("/var/lib/vrobbler/commit.txt")
if commit_file.exists():
try:
commit = commit_file.read_text().strip()
if commit:
_GIT_COMMIT = commit
return {"app_version": app_version, "git_commit": _GIT_COMMIT}
except OSError:
pass
PROJECT_ROOT = Path(__file__).resolve().parent.parent
try:
_GIT_COMMIT = (
subprocess.check_output(
["git", "rev-parse", "--short", "HEAD"],
cwd=PROJECT_ROOT,
stderr=subprocess.DEVNULL,
)
.decode("utf-8")
.strip()
)
except (subprocess.SubprocessError, FileNotFoundError):
_GIT_COMMIT = "unknown"
return {"app_version": app_version, "git_commit": _GIT_COMMIT}