Исправление #2

This commit is contained in:
Евгений Титаренко 2023-07-23 15:28:33 +03:00
parent 9c7819dfbd
commit 3c435c82de

View file

@ -6,7 +6,6 @@ import os
import mcgetdb import mcgetdb
from colorama import Fore, Style from colorama import Fore, Style
db = mcgetdb.McGetDB(mcfs.mc_dir)
def validate(): def validate():
raise NotImplementedError raise NotImplementedError
@ -92,7 +91,8 @@ def install(projects: list, version, loader):
else: else:
unavailable.append(project_data) unavailable.append(project_data)
if to_install: if to_install:
print("To install:", *[project.title + " " + version.version_number for project, version in to_install], sep="\n\t") print("To install:", *[project.title + " " + version.version_number for project, version in to_install],
sep="\n\t")
if dependencies_to_install: if dependencies_to_install:
print("With dependencies:", print("With dependencies:",
*[project.title + " " + version.version_number for project, version in dependencies_to_install], *[project.title + " " + version.version_number for project, version in dependencies_to_install],
@ -159,11 +159,24 @@ def clean():
if __name__ == "__main__": if __name__ == "__main__":
def exit():
import sys
sys.exit("MC installation not found. If the program is not installed in the default location, "
"then specify the path to the installation through the MC_DIR environment variable.")
if not mcfs.is_path_exist(mcfs.mc_dir):
exit()
db = mcgetdb.McGetDB(mcfs.mc_dir)
def __select_version(versions): def __select_version(versions):
if len(versions) > 0: if not versions:
return None
print("Installed MC versions: ") print("Installed MC versions: ")
for id, version in enumerate(versions): for id, version in enumerate(versions):
print(id + 1, version.version_number + (f" with {version.modloader}" if version.is_modified else ""), print(id + 1,
version.version_number + (f" with {version.modloader}" if version.is_modified else ""),
sep=": ") sep=": ")
if len(versions) > 1: if len(versions) > 1:
id_to_use = -1 id_to_use = -1
@ -183,13 +196,18 @@ if __name__ == "__main__":
properties = db.get_properties() properties = db.get_properties()
if not properties: if not properties:
version_to_use = __select_version(mcfs.get_installed_mc_versions()) version_to_use = __select_version(mcfs.get_installed_mc_versions())
if version_to_use:
if version_to_use.is_modified: # TODO: Добавить иерархию каталогов if version_to_use.is_modified: # TODO: Добавить иерархию каталогов
db.set_properties(version_to_use.version_number, version_to_use.modloader) db.set_properties(version_to_use.version_number, version_to_use.modloader)
else: else:
db.set_properties(version_to_use.version_number) db.set_properties(version_to_use.version_number)
properties = db.get_properties() properties = db.get_properties()
print(properties) else:
properties = None
if properties:
_, mc_ver, loader, _ = properties _, mc_ver, loader, _ = properties
else:
mc_ver, loader = None, None
desc = "Minecraft mods packet manager based on Modrinth API" desc = "Minecraft mods packet manager based on Modrinth API"
parser = argparse.ArgumentParser(description=desc, parser = argparse.ArgumentParser(description=desc,
@ -208,8 +226,9 @@ if __name__ == "__main__":
parser_validate = subparsers.add_parser("validate", help="Validate the installation") parser_validate = subparsers.add_parser("validate", help="Validate the installation")
parser_clean = subparsers.add_parser("clean", help="Clean the cache of this program") parser_clean = subparsers.add_parser("clean", help="Clean the cache of this program")
kwargs = vars(parser.parse_args()) # Получаем все поля получившегося Namespace и пихаем в словарь kwargs = vars(parser.parse_args()) # Получаем все поля получившегося Namespace и пихаем в словарь
if not properties:
exit()
globals()[kwargs.pop("method")](**kwargs) # Из глобального контекста получаем функцию с названием как в method, globals()[kwargs.pop("method")](**kwargs) # Из глобального контекста получаем функцию с названием как в method,
# заодно вытаскивая название метода из списка аргументов, # заодно вытаскивая название метода из списка аргументов,
# затем вызываем функцию с распакованным словарём в качестве аргумента # затем вызываем функцию с распакованным словарём в качестве аргумента