Добавление workflow для сборки apk
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import yaml
|
||||
import requests
|
||||
import argparse
|
||||
import colorama
|
||||
import importlib
|
||||
import traceback
|
||||
@@ -141,6 +143,13 @@ def compile_apk(apk: str):
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.PIPE,
|
||||
)
|
||||
title = "anixart mod "
|
||||
with open('./decompiled/apktool.yml') as f:
|
||||
package = yaml.safe_load(f)
|
||||
title += ' '.join([f'{k}: {v}' for k, v in package['versionInfo'].items()])
|
||||
with open("./modified/report.log", "w") as log_file:
|
||||
log_file.write(title+'\n')
|
||||
log_file.write("\n".join([f"{patch.name}: {'applied' if patch.applied else 'failed'}" for patch in patches]))
|
||||
except subprocess.CalledProcessError as e:
|
||||
print("Ошибка при выполнении команды:")
|
||||
print(e.stderr)
|
||||
@@ -167,39 +176,55 @@ class Patch:
|
||||
traceback.print_exc()
|
||||
return False
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Автоматический патчер anixart"
|
||||
)
|
||||
|
||||
conf = init()
|
||||
apk = select_apk()
|
||||
patch = decompile_apk(apk)
|
||||
parser.add_argument("-v", "--verbose",
|
||||
action="store_true",
|
||||
help="Выводить подробные сообщения")
|
||||
|
||||
patches = []
|
||||
for filename in os.listdir("patches/"):
|
||||
if filename.endswith(".py") and filename != "__init__.py" and not filename.startswith("todo_"):
|
||||
module_name = filename[:-3]
|
||||
module = importlib.import_module(f"patches.{module_name}")
|
||||
patches.append(Patch(module_name, module))
|
||||
parser.add_argument("-f", "--force",
|
||||
action="store_true",
|
||||
help="Принудительно собрать APK")
|
||||
|
||||
patches.sort(key=lambda x: x.package.priority, reverse=True)
|
||||
args = parser.parse_args()
|
||||
|
||||
for patch in tqdm(patches, colour="green", desc="Применение патчей"):
|
||||
tqdm.write(f"Применение патча: {patch.name}")
|
||||
patch.apply(conf)
|
||||
conf = init()
|
||||
apk = select_apk()
|
||||
patch = decompile_apk(apk)
|
||||
|
||||
statuses = {}
|
||||
for patch in patches:
|
||||
statuses[patch.name] = patch.applied
|
||||
marker = colorama.Fore.GREEN + "✔" if patch.applied else colorama.Fore.RED + "✘"
|
||||
print(f"{marker}{colorama.Style.RESET_ALL} {patch.name}")
|
||||
if args.verbose: conf["verbose"] = True
|
||||
|
||||
if all(statuses.values()):
|
||||
print(f"{colorama.Fore.GREEN}Все патчи успешно применены{colorama.Style.RESET_ALL}")
|
||||
compile_apk(apk)
|
||||
elif any(statuses.values()):
|
||||
print(f"{colorama.Fore.YELLOW}⚠{colorama.Style.RESET_ALL} Некоторые патчи не были успешно применены")
|
||||
if input("Продолжить? (y/n): ").lower() == "y":
|
||||
patches = []
|
||||
for filename in os.listdir("patches/"):
|
||||
if filename.endswith(".py") and filename != "__init__.py" and not filename.startswith("todo_"):
|
||||
module_name = filename[:-3]
|
||||
module = importlib.import_module(f"patches.{module_name}")
|
||||
patches.append(Patch(module_name, module))
|
||||
|
||||
patches.sort(key=lambda x: x.package.priority, reverse=True)
|
||||
|
||||
for patch in tqdm(patches, colour="green", desc="Применение патчей"):
|
||||
tqdm.write(f"Применение патча: {patch.name}")
|
||||
patch.apply(conf)
|
||||
|
||||
statuses = {}
|
||||
for patch in patches:
|
||||
statuses[patch.name] = patch.applied
|
||||
marker = colorama.Fore.GREEN + "✔" if patch.applied else colorama.Fore.RED + "✘"
|
||||
print(f"{marker}{colorama.Style.RESET_ALL} {patch.name}")
|
||||
|
||||
if all(statuses.values()):
|
||||
print(f"{colorama.Fore.GREEN}Все патчи успешно применены{colorama.Style.RESET_ALL}")
|
||||
compile_apk(apk)
|
||||
elif any(statuses.values()):
|
||||
print(f"{colorama.Fore.YELLOW}⚠{colorama.Style.RESET_ALL} Некоторые патчи не были успешно применены")
|
||||
if args.force or input("Продолжить? (y/n): ").lower() == "y":
|
||||
compile_apk(apk)
|
||||
else:
|
||||
print(colorama.Fore.RED + "Операция отменена" + colorama.Style.RESET_ALL)
|
||||
else:
|
||||
print(colorama.Fore.RED + "Операция отменена" + colorama.Style.RESET_ALL)
|
||||
else:
|
||||
print(f"{colorama.Fore.RED}Ни один патч не был успешно применен{colorama.Style.RESET_ALL}")
|
||||
sys.exit(1)
|
||||
print(f"{colorama.Fore.RED}Ни один патч не был успешно применен{colorama.Style.RESET_ALL}")
|
||||
sys.exit(1)
|
||||
|
||||
Reference in New Issue
Block a user