| # Copyright 2022 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| import pathlib |
| import shutil |
| import subprocess |
| import sys |
| |
| DEPOT_TOOLS_ROOT = os.path.dirname(os.path.abspath(__file__)) |
| |
| |
| def depot_tools_version(): |
| depot_tools_root = os.path.dirname(os.path.abspath(__file__)) |
| try: |
| commit_hash = subprocess.check_output(['git', 'rev-parse', 'HEAD'], |
| cwd=depot_tools_root).decode( |
| 'utf-8', 'ignore') |
| return 'git-%s' % commit_hash |
| except Exception: |
| pass |
| |
| # git check failed, let's check last modification of frequently checked file |
| try: |
| mtime = os.path.getmtime( |
| os.path.join(depot_tools_root, 'infra', 'config', 'recipes.cfg')) |
| return 'recipes.cfg-%d' % (mtime) |
| except Exception: |
| return 'unknown' |
| |
| |
| def depot_tools_config_dir(): |
| # Use depot tools path for mac, windows. |
| if not sys.platform.startswith('linux'): |
| return DEPOT_TOOLS_ROOT |
| |
| # Use $XDG_CONFIG_HOME/depot_tools or $HOME/.config/depot_tools on linux. |
| config_root = os.getenv('XDG_CONFIG_HOME', os.path.expanduser('~/.config')) |
| return os.path.join(config_root, 'depot_tools') |
| |
| |
| def depot_tools_config_path(file): |
| config_dir = depot_tools_config_dir() |
| expected_path = os.path.join(config_dir, file) |
| |
| # Silently create config dir if necessary. |
| pathlib.Path(config_dir).mkdir(parents=True, exist_ok=True) |
| |
| # Silently migrate cfg from legacy path if it exists. |
| if not os.path.isfile(expected_path): |
| legacy_path = os.path.join(DEPOT_TOOLS_ROOT, file) |
| if os.path.isfile(legacy_path): |
| shutil.move(legacy_path, expected_path) |
| |
| return expected_path |