fix: REALLY fix <=3.12

This commit is contained in:
zx
2024-09-07 09:31:10 -04:00
parent c5f5a4a4d1
commit 5d25dd2690

View File

@@ -4,6 +4,7 @@ import shutil
import zipfile import zipfile
import platform import platform
import subprocess import subprocess
from uuid import uuid4
from typing import Optional from typing import Optional
from glob import glob, iglob from glob import glob, iglob
from argparse import Namespace from argparse import Namespace
@@ -116,35 +117,38 @@ def delete_if_exists(path: str, bn: str) -> bool:
return False return False
# damn it, literally EVERY FUCKING python version before 3.12 FUCKING SUCKS
def extract_deb(deb: str, tweaks: dict[str, str], tmpdir: str) -> None: def extract_deb(deb: str, tweaks: dict[str, str], tmpdir: str) -> None:
with TemporaryDirectory(prefix=tmpdir + "/", delete=False) as t2: t2 = f"{tmpdir}/{uuid4()}"
if platform.system() == "Linux": os.mkdir(t2)
tool = ["ar", "-x", deb, f"--output={t2}"]
else:
tool = ["tar", "-xf", deb, f"--directory={t2}"]
try: if platform.system() == "Linux":
subprocess.run(tool, check=True) tool = ["ar", "-x", deb, f"--output={t2}"]
except Exception: else:
sys.exit(f"[!] couldn't extract {os.path.basename(deb)}") tool = ["tar", "-xf", deb, f"--directory={t2}"]
# it's not always "data.tar.gz" try:
data_tar = glob(f"{t2}/data.*")[0] subprocess.run(tool, check=True)
subprocess.run(["tar", "-xf", data_tar, f"--directory={t2}"]) except Exception:
sys.exit(f"[!] couldn't extract {os.path.basename(deb)}")
for hi in sum(( # it's not always "data.tar.gz"
glob(f"{t2}/**/*.dylib", recursive=True), data_tar = glob(f"{t2}/data.*")[0]
glob(f"{t2}/**/*.bundle", recursive=True), subprocess.run(["tar", "-xf", data_tar, f"--directory={t2}"])
glob(f"{t2}/**/*.appex", recursive=True),
glob(f"{t2}/**/*.framework", recursive=True)
), []): # type: ignore
if os.path.islink(hi):
continue # symlinks are broken iirc
tweaks[os.path.basename(hi)] = hi for hi in sum((
glob(f"{t2}/**/*.dylib", recursive=True),
glob(f"{t2}/**/*.bundle", recursive=True),
glob(f"{t2}/**/*.appex", recursive=True),
glob(f"{t2}/**/*.framework", recursive=True)
), []): # type: ignore
if os.path.islink(hi):
continue # symlinks are broken iirc
print(f"[*] extracted {os.path.basename(deb)}") tweaks[os.path.basename(hi)] = hi
del tweaks[os.path.basename(deb)]
print(f"[*] extracted {os.path.basename(deb)}")
del tweaks[os.path.basename(deb)]
def make_ipa(tmpdir: str, output: str, level: int) -> None: def make_ipa(tmpdir: str, output: str, level: int) -> None: