| # Copyright 2024 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """ A simple wrapper of running gsutil.py from the depot_tools; all the |
| functions in this module are running in a separated process. """ |
| |
| import os |
| import subprocess |
| import sys |
| |
| from typing import List |
| |
| from common import DIR_SRC_ROOT |
| |
| |
| def _find_gsutil() -> str: |
| """ Returns the location of the gsutil.py. """ |
| sys.path.append(os.path.join(DIR_SRC_ROOT, 'build')) |
| # Do not pollute the environment, callers should not use find_depot_tools |
| # directly. |
| # pylint: disable=import-error, import-outside-toplevel |
| import find_depot_tools |
| # pylint: enable=import-error, import-outside-toplevel |
| sys.path.pop() |
| return os.path.join(find_depot_tools.DEPOT_TOOLS_PATH, 'gsutil.py') |
| |
| |
| GSUTIL_PATH = _find_gsutil() |
| |
| |
| def run_gsutil(args: List[str]) -> None: |
| """ Runs gsutil with |args| and throws CalledProcessError if the process |
| failed. """ |
| return subprocess.run([sys.executable, GSUTIL_PATH] + args, check=True) |