borgmatic/borgmatic/debug_env.py

42 lines
1.7 KiB
Python

import platform
import logging
import os
from borgmatic.borg import version as borg_version
try:
import importlib_metadata
except ModuleNotFoundError: # pragma: nocover
import importlib.metadata as importlib_metadata
logger = logging.Logger(__name__)
def log_versions(): # pragma: nocover
'''
Logs the platform and the architecture on debug. Also logs the version of borgmatic and python.
'''
logging.debug(f'Borgmatic version: {importlib_metadata.version("borgmatic")}')
logging.debug(f'Architecture: {platform.machine()}')
logging.debug(f'Python: {platform.python_implementation()} {platform.python_version()}')
if platform.system() == 'Linux':
logging.debug('Operating system: Linux')
logging.debug(f'Kernel: {os.uname()[2]}')
try:
os_release = platform.freedesktop_os_release()
if 'PRETTY_NAME' in os_release:
logging.debug(f'Distribution: {os_release["PRETTY_NAME"]}')
elif 'NAME' in os_release:
logging.debug(f'Distribution name: {os_release["NAME"]}')
if 'VERSION' in os_release:
logging.debug(f'Distribution version: {os_release["VERSION"]}')
except OSError:
logging.debug('Cannot determine linux distribution: /etc/os-release and /usr/lib/os-release not accessible')
elif platform.system() == 'Darwin':
logging.debug('Operating system: MacOS')
logging.debug(f'Operating system version: {platform.mac_ver()[0]}')
elif platform.system() == 'Windows':
logging.debug('Operating system: Windows')
logging.debug(f'Operating system version: {platform.win32_edition()[0]}')
else:
logging.debug(f'Operating system: {platform.system()}')