2023-12-11 18:31:11 +01:00
|
|
|
import os
|
|
|
|
import subprocess
|
|
|
|
from contextlib import suppress
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
|
|
def _get_version():
|
|
|
|
# first check for the environment variable that is set inside docker containers we build
|
|
|
|
if version := os.environ.get('C3NAV_VERSION', None):
|
|
|
|
return version.strip()
|
|
|
|
|
|
|
|
# alternatively check if there is a `.version` file at the root of the c3nav module
|
|
|
|
version_file = Path(__file__).resolve().parent / '.version'
|
|
|
|
with suppress(FileNotFoundError):
|
|
|
|
if version := version_file.read_text().strip():
|
|
|
|
return version
|
|
|
|
|
|
|
|
# last check if this a checkout of c3nav git repo and get the current HEAD
|
|
|
|
if (Path(__file__).resolve().parent.parent.parent / '.git').exists():
|
|
|
|
with suppress(FileNotFoundError, subprocess.SubprocessError):
|
|
|
|
run = subprocess.run(['git', 'rev-parse', 'HEAD'], capture_output=True, encoding='utf-8')
|
|
|
|
if run.returncode == 0:
|
|
|
|
return run.stdout.strip()
|
|
|
|
|
|
|
|
# if everything fails return None
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
__version__ = _get_version()
|