# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import functools
import platform
import subprocess
from pkg_resources import packaging
def check_chrome_version(downloaded_chrome: str) -> packaging.version.Version:
host = get_hosted_platform()
if host == 'win':
cmd = ('powershell -command "&{(Get-Item'
'\''+ downloaded_chrome + '\').VersionInfo.ProductVersion}"')
version = subprocess.run(cmd, check=True,
capture_output=True).stdout.decode('utf-8')
else:
cmd = [downloaded_chrome, '--version']
version = subprocess.run(cmd, check=True,
capture_output=True).stdout.decode('utf-8')
# Only return the version number portion
version = version.strip().split(' ')[-1]
return packaging.version.parse(version)
@functools.lru_cache
def get_hosted_platform() -> str:
"""Returns the host platform.
Returns: One of 'linux', 'win' and 'mac'.
"""
host = platform.uname().system.lower()
if host in ('win32', 'cygwin', 'windows'):
return 'win'
if host.startswith('linux'):
return 'linux'
if host == 'darwin':
return 'mac'
raise RuntimeError('Unknown or unsupported host platform (%s).' %
platform.uname())