Files
gitlab-instance-0a899031_re…/tools/helper.py
2026-04-04 00:03:05 -05:00

86 lines
2.4 KiB
Python

import hashlib
import os
from pathlib import Path
import platform
import subprocess
import requests
from tqdm import tqdm
REPO_ROOT = Path(__file__).resolve().parents[1]
OFFLINE_ROOT = REPO_ROOT / "offline"
DOWNLOAD_ROOT = OFFLINE_ROOT / "downloads"
IMAGE_ROOT = OFFLINE_ROOT / "images"
def ensure_dir(path):
path.mkdir(parents=True, exist_ok=True)
return str(path)
def get_download_dir():
return ensure_dir(DOWNLOAD_ROOT)
def get_image_dir():
return ensure_dir(IMAGE_ROOT)
def run(args):
result = subprocess.run(args=args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.stderr:
print(result.stderr.decode("utf-8"))
raise subprocess.CalledProcessError(
returncode = result.returncode,
cmd = result.args,
stderr = result.stderr
)
return result
def download_file(url, f_name):
md5 = ""
response = requests.get(url, stream=True)
total_size_in_bytes = int(response.headers.get('content-length', 0))
block_size = 1024 # 1 Kibibyte
progress_bar = tqdm(total=total_size_in_bytes, unit='iB', unit_scale=True)
with open(f_name, 'wb') as file:
for data in response.iter_content(block_size):
progress_bar.update(len(data))
file.write(data)
progress_bar.close()
with open(f_name, "rb") as f:
bytes = f.read()
md5 = hashlib.md5(bytes).hexdigest()
if total_size_in_bytes != 0 and progress_bar.n != total_size_in_bytes:
raise ValueError("Something went wrong while downloading")
return md5
def host():
machine = platform.machine().lower()
mapping = {
"i686": ("x86", 32),
"x86_64": ("x86_64", 64),
"amd64": ("x86_64", 64),
"aarch64": ("arm64", 64),
"armv7l": ("arm", 32),
"armv8l": ("arm", 32)
}
if machine in mapping:
# if mapping[machine] == "x86_64":
# with open("/proc/cpuinfo") as f:
# if "sse4_2" not in f.read():
# print("x86_64 CPU does not support SSE4.2, falling back to x86...")
# return ("x86", 32)
return mapping[machine]
raise ValueError("platform.machine '" + machine + "'"
" architecture is not supported")
class bcolors:
RED = '\033[31m'
YELLOW = '\033[33m'
GREEN = '\033[32m'
ENDC = '\033[0m'
def print_color(str, color):
print(color+str+bcolors.ENDC)