mirror of
https://github.com/Alex313031/thorium.git
synced 2025-01-09 11:27:32 -03:00
ce732accf6
1.Move *.bat files to //win_scripts/old. These files have not been updated for a long time and are not convenient to use. 2.Rewrite some sh files with python, currently only for the parts applicable to Windows. 3.Some other related changes.
88 lines
2.9 KiB
Python
88 lines
2.9 KiB
Python
# Copyright (c) 2024 Alex313031, midzer and gz83.
|
|
|
|
"""
|
|
This file is the equivalent of reset_depot_tools.py in the parent folder, but we
|
|
do not need to deal with the .vpython_cipd_cache.
|
|
This file may prompt "Access denied" and other prompts during the operation, but
|
|
in fact it seems that the files we need to delete have been deleted.
|
|
"""
|
|
|
|
# TODO(gz83): Suppress false positives during operation?
|
|
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def fail(msg):
|
|
print(f"{sys.argv[0]}: {msg}", file=sys.stderr)
|
|
sys.exit(111)
|
|
|
|
|
|
def try_run(command):
|
|
try:
|
|
subprocess.run(command, shell=True, check=True)
|
|
except subprocess.CalledProcessError:
|
|
fail(f"Failed {command}")
|
|
|
|
|
|
def remove(item_path):
|
|
if os.path.exists(item_path):
|
|
if os.path.isdir(item_path):
|
|
try:
|
|
# Try to unlock and delete the directory
|
|
unlock_and_delete(item_path)
|
|
print(f"removed '{item_path}'")
|
|
except PermissionError as e:
|
|
print(f"Failed to remove '{item_path}': {e}")
|
|
else:
|
|
os.remove(item_path)
|
|
print(f"removed '{item_path}'")
|
|
|
|
|
|
def unlock_and_delete(path):
|
|
"""Attempts to unlock and delete a directory using cmd commands."""
|
|
if sys.platform == "win32":
|
|
# Use the Windows command line tools to unlock the directory
|
|
try:
|
|
# Use the command 'del' to delete all files recursively
|
|
subprocess.run(f'del /S /Q "{path}\\*"', shell=True, check=True)
|
|
# Use the command 'rmdir' to delete the directory
|
|
subprocess.run(f'rmdir /S /Q "{path}"', shell=True, check=True)
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"Failed to unlock and delete directory '{path}' via CMD: {e}")
|
|
raise PermissionError(f"Failed to unlock and delete directory '{path}' via CMD: {e}")
|
|
else:
|
|
# For other platforms, just use shutil.rmtree
|
|
shutil.rmtree(path)
|
|
|
|
|
|
def display_help():
|
|
print("\nScript to reset depot_tools on Windows.\n")
|
|
print("This will remove depot_tools, .gsutil, and .vpython-root")
|
|
print("from your disk, and then re-clone depot_tools.")
|
|
print("\n")
|
|
|
|
if '--help' in sys.argv:
|
|
display_help()
|
|
sys.exit(0)
|
|
|
|
|
|
depot_tools_dir = os.getenv('DEPOT_TOOLS_DIR', r"C:\src\depot_tools")
|
|
gsutil_dir = os.path.expandvars(os.getenv('GSUTIL_DIR', r'%USERPROFILE%\.gsutil'))
|
|
vpython_root_dir = os.path.expandvars(os.getenv('VPYTHON_ROOT_DIR', r'%LOCALAPPDATA%\.vpython-root'))
|
|
|
|
print("\nRemoving depot_tools, etc\n")
|
|
|
|
remove(depot_tools_dir)
|
|
remove(gsutil_dir)
|
|
remove(vpython_root_dir)
|
|
|
|
print("\nRe-clone depot_tools\n")
|
|
|
|
os.chdir(os.path.dirname(depot_tools_dir))
|
|
try_run(f"git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git")
|
|
|
|
print(f"\nCompleted. You can now use the depot_tools installed at: {depot_tools_dir}\n")
|
|
print("\nYou can now run trunk.py\n")
|