You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
depot_tools/utils.py

57 lines
1.8 KiB
Python

# 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