43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
# 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())
|