"""Helper to gather system info."""
import os
import platform
from typing import Dict

from homeassistant.const import __version__ as current_version
from homeassistant.loader import bind_hass
from homeassistant.util.package import is_virtual_env
from .typing import HomeAssistantType


@bind_hass
async def async_get_system_info(hass: HomeAssistantType) -> Dict:
    """Return info about the system."""
    info_object = {
        'version': current_version,
        'dev': 'dev' in current_version,
        'hassio': hass.components.hassio.is_hassio(),
        'virtualenv': is_virtual_env(),
        'python_version': platform.python_version(),
        'docker': False,
        'arch': platform.machine(),
        'timezone': str(hass.config.time_zone),
        'os_name': platform.system(),
    }

    if platform.system() == 'Windows':
        info_object['os_version'] = platform.win32_ver()[0]
    elif platform.system() == 'Darwin':
        info_object['os_version'] = platform.mac_ver()[0]
    elif platform.system() == 'FreeBSD':
        info_object['os_version'] = platform.release()
    elif platform.system() == 'Linux':
        info_object['docker'] = os.path.isfile('/.dockerenv')

    return info_object
