import platform
import sys
from pathlib import Path
from shutil import rmtree
if (system := platform.system()) != "Linux":
raise SystemExit(f"{system} is not supported")
def find_hd2_shadercache():
HD2_APPID = "553850"
registry = Path.home().joinpath(".steam/steam/steamapps/libraryfolders.vdf")
if not registry.exists():
raise RuntimeError("Steam is not installed")
with registry.open() as fd:
for line in fd:
if '"path"' in line:
path = Path(line.split(maxsplit=1)[1].replace('"', "").rstrip())
elif HD2_APPID in line:
shader_cache = path.joinpath("steamapps/shadercache", HD2_APPID)
if not shader_cache.exists():
raise RuntimeError("Shader cache of HELLDIVERS2 not found")
return shader_cache
raise RuntimeError("HELLDIVERS2 not found")
def human_size(size: int) -> str:
for unit in ("", "KiB", "MiB", "GiB"):
if size < 1024:
break
size /= 1024
return f"{size:.2f} {unit}"
def get_size_ext(path: Path) -> (int, set[str]):
files = [element for element in path.rglob("*") if element.is_file()]
return sum(element.stat().st_size for element in files), {
suffix for file in files if (suffix := file.suffix)
}
def ask_delete(shader_cache: Path):
print("Calculating size of shader cache")
size, extensions_found = get_size_ext(shader_cache)
print("Detected Path:", shader_cache)
print("Size:", human_size(size))
print("Found extensions:", " / ".join(sorted(extensions_found)))
user_input = input("Do you want to delete the shader cache? [n/y]: ")
if user_input.lower() == "y":
print(f"Deleting path: {shader_cache}")
rmtree(shader_cache)
else:
print("Keeping shader cache")
def main():
RED = "\033[0;31m"
NO_COLOR = "\033[0m"
try:
ask_delete(find_hd2_shadercache())
except Exception as e:
info = "no furter information"
if e.args:
info = e.args[0]
print(f"{type(e).__name__}: {RED}{info}{NO_COLOR}")
return 1
except KeyboardInterrupt:
print("\nKeyboardInterrupt")
return 1
return 0
if __name__ == "__main__":
sys.exit(main())
Comments
0 B
|👍
/👎