Skip to content

Commit

Permalink
v2.11
Browse files Browse the repository at this point in the history
  • Loading branch information
Skrepysh committed Aug 10, 2023
1 parent f6b14c0 commit 118c754
Show file tree
Hide file tree
Showing 2 changed files with 131 additions and 101 deletions.
92 changes: 76 additions & 16 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,91 @@
from pyselector import PySelector
import os
import time
import argparse
from pyselector import PySelector, ZeroSelector
from tkinter import messagebox as msg
parser = argparse.ArgumentParser(description='Привет от разработчика!')
parser.add_argument("--devmode", default=0, help="Режим разработчика. НЕ ЛЕЗЬТЕ ТУДА!!!")
parser.add_argument("--mp", default=0, help="используйте --mp [номер модпака] для создания ярлыков быстрого "
"доступа к определенным модпакам "
"например /.../.../pyselector.exe --mp 3 <--- для создания ярлыка,"
"активирующего модпак 3")
parser.add_argument("--restore", default=0, help="используйте --restore 1, чтобы восстановить бэкап")
parser.add_argument("--restore", default=0, nargs='?', const=1, help="используйте --restore, чтобы восстановить бэкап")
args = parser.parse_args()

program_version = "2.10"
program_version = "2.11"
ok = PySelector(program_version)
args.mp = int(args.mp)
args.restore = str(args.restore)
args.devmode = str(args.devmode)
if args.devmode == "1":
ok.devmode()
else:
if args.mp != 0 and args.mp > 0:
ok.setup_logger()
ok.read_config()
ok.build_list()
ok.load_modpack(modpack_number=(args.mp - 1), mode="1")
else:
if args.restore != "0":
logging = ok.logging

while True:
try:
if args.devmode == "1":
ok.devmode()
else:
ok.setup_logger()
logging.info(f'Версия программы: {program_version}')
ok.read_config()
ok.restore_backup()
else:
ok.run()
ok.checker()
logging.info(f'Путь к программе: {ok.program_directory}')
logging.info(f'Путь к игре: {ok.game_directory}')
logging.info(f'Путь к папке с пользовательскими данными: {ok.userappdata}')
if args.mp != 0 and args.mp > 0:
ok.setup_logger()
ok.build_list()
ok.load_modpack(modpack_number=(args.mp - 1), mode="1")
else:
if args.restore != "0":
ok.setup_logger()
ok.restore_backup()
else:
ok.run()
except KeyError as err:
logging.error("KeyError")
logging.exception(err)
msg.showerror(title="Ошибка конфиг-файла", message="Похоже, config.ini поврежден, "
"он будет пересоздан")
ok.build_config()
ok.finish()
except IndexError as err:
logging.error("IndexError")
logging.exception(err)
print("неверное значение\nперезапуск")
ok.error()
except PermissionError as err:
logging.error("PermissionError")
logging.exception(err)
msg.showerror(title="Ошибка доступа", message="Не удается получить доступ к какому-то файлу.\n"
"Проверьте, закрыт ли клиент игры!"
"\nИли попробуйте запустить программу "
"от имени администратора")
exit()
except OverflowError as err:
logging.error("OverflowError")
logging.exception(err)
print("многацифер\nперезапуск")
ok.error()
except ZeroSelector as err:
logging.error("ZeroSelector")
logging.exception(err)
print("неверное значение\nперезапуск")
ok.error()
except ValueError as err:
logging.error("ValueError")
logging.exception(err)
print("неверное значение\nперезапуск")
ok.error()
except FileNotFoundError as err:
logging.error("FileNotFoundError")
logging.exception(err)
logging.error("FileNotFoundError, запуск чекера")
ok.checker()
ok.finish()
except Exception as err:
os.system("cls")
logging.error("Неизвестная ошибка!!")
print("неизвестная ошибка, смотри логи")
logging.exception(err)
time.sleep(7)
break
140 changes: 55 additions & 85 deletions pyselector.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
from progress.bar import Bar
import datetime as dt
from tkinter import messagebox as msg
from sys import exit


class ZeroSelector(Exception):
Expand All @@ -18,12 +17,13 @@ class PySelector:
def __init__(self, version):
self.dt = dt.datetime.now()
self.user_choice = "ОШИБКА"
self.list = ["ОШИБКА!", "УДАЛИТЕ ЭТУ ВЕРСИЮ ПРОГРАММЫ!!!"]
self.configfile_name = 'config'
self.list = []
self.version = str(version)
self.game_directory = "%appdata%/.minecraft"
self.game_directory = f'{os.environ["appdata"]}\\.minecraft'
self.program_directory = os.getcwd()
self.userappdata = f'{os.environ["appdata"]}\\pySelector'
self.config = configparser.ConfigParser()
self.logging = logging
# noinspection PyGlobalUndefined

@staticmethod
Expand All @@ -38,6 +38,31 @@ def finish():
logging.info("Работа программы завершена")
sys.exit()

@staticmethod
def enter_path():
logging.info("Запущен enter_path!")
while True:
logging.info("Запрашиваем путь к майну")
print("Не вводите ничего, чтобы использовать стандартный путь %appdata%/.minecraft")
inp = str(input("Введите путь к папке с игрой: "))
logging.info(f"Пользователь ввел {inp}")
inp = inp.replace('"', '')
if inp.replace(" ", "") == "":
inp = ""
logging.info(f"Выбран стандартный путь %appdata%/.minecraft")
print(f"Выбран стандартный путь %appdata%/.minecraft")
break
if not os.path.exists(inp):
print("Путь не существует!\n")
logging.info("Ooooops! Путь не существует")
else:
logging.info("Введен действительный путь")
print("Введен действительный путь")
break
time.sleep(1)
os.system("cls")
return str(inp)

def setup_logger(self, mode=0):
if not os.path.exists(f"{self.userappdata}\\logs"):
os.makedirs(f"{self.userappdata}\\logs")
Expand All @@ -61,12 +86,9 @@ def read_config(self):
if not os.path.exists(f'{self.userappdata}\\config.ini'):
logging.error("Не найден config.ini!, Запуск build_config`а")
self.build_config()

os.chdir(self.userappdata)
settings = configparser.ConfigParser()
settings.read(f"{self.configfile_name}.ini")
game_directory = settings["paths"]["minecraft"].replace('"', '').replace('/', '\\')
program_directory = settings["paths"]["program"].replace('"', '').replace('/', '\\')
self.config.read(f"{self.userappdata}\\config.ini")
game_directory = self.config["paths"]["game_path"].replace('"', '').replace('/', '\\')
program_directory = self.config["paths"]["program"].replace('"', '').replace('/', '\\')
logging.info("Конфиг прочитан")
if game_directory == "" or not os.path.exists(game_directory):
pass
Expand Down Expand Up @@ -98,9 +120,8 @@ def checker(self):
logging.error("Не удалось создать папку mods в корне игры!")
msg.showwarning(title="Ошибка",
message="Не удалось создать папку mods в корне игры, похоже, указан неверный путь!"
"\nПроверьте config.ini")
os.system(f"notepad {self.userappdata}/config.ini")
logging.info("Конфиг открыт в блокноте")
f"\nПроверьте путь к папке с игрой: {self.game_directory}")
self.build_config()
sys.exit()
if not os.path.exists(f"{self.userappdata}/modpacks"):
errs += 1
Expand All @@ -115,7 +136,6 @@ def checker(self):
logging.info("Ошибок нет!")
else:
logging.warning("Были обнаружены ошибки!")
errs = 0
logging.info("Чекер завершил работу")

def ui(self):
Expand All @@ -140,11 +160,11 @@ def ui(self):
print(str(counter) + str(divider) + str(ver))
counter += 1
print("*")
print("re - восстановление бэкапа\nq - выход")
logging.info(f"Количество модпаков: {int(counter) - 1}")
print("Чтобы восстановить бэкап напишите restore")
logging.info("Ждем выбора модпака пользователем...")
selector = str(input("Выберите версию: "))
if selector == "restore":
if selector == "re":
self.restore_backup()
if selector == "q" or selector == "quit":
logging.info("Пользователь ввел команду q!")
Expand All @@ -164,16 +184,13 @@ def build_list(self):

def build_config(self):
logging.info('Запущен build_config')
file = open(f"{self.userappdata}\\config.ini", "w")
file.write(
'[paths]\n; write path to minecraft folder below (%appdata%/.minecraft if not filled)\nminecraft = \n'
'; do not use parameter below, if do not know, what are you doing!!!!\nprogram = ')
file.close()
logging.info("Начато создание config файла")
with open(f"{self.userappdata}\\config.ini", "w") as f:
f.write(f"[paths]\n; write path to minecraft folder below (%appdata%/.minecraft if not filled)\n"
f"game_path = {self.enter_path()}\n; do not use parameter below, if do not know, "
f"what are you doing\nprogram = \n")
f.close()
logging.info('Конфиг создан успешно')
msg.showinfo(title="Привет!",
message='Ты запустил эту программу в первый раз, и ее надо настроить. Проверь config.ini!')
logging.info('Конфиг открыт в блокноте')
os.system(f"notepad {self.userappdata}/config.ini")

def devmode(self):
self.setup_logger(mode=1)
Expand All @@ -183,7 +200,7 @@ def devmode(self):
if devm == "0":
self.finish()
if devm == "1":
logging.warning("Запущено принудительное восстановление конфига")
logging.warning("Запущено принудительное пересоздание конфига")
self.build_config()
if devm == "2":
self.read_config()
Expand Down Expand Up @@ -279,62 +296,15 @@ def restore_backup(self):
self.finish()

def run(self):
while True:
try:
self.setup_logger()
logging.info(f'Версия программы: {self.version}')
if not os.path.exists(f"{self.userappdata}\\config.ini"):
self.build_config()
else:
pass
os.chdir(self.userappdata)
self.read_config()
self.build_list()
self.checker()
logging.info(f'Путь к программе: {self.program_directory}')
logging.info(f'Путь к игре: {self.game_directory}')
logging.info(f'Путь к папке с пользовательскими данными: {self.userappdata}')
if os.path.exists(f"{self.game_directory}\\tempfiles\\"):
shutil.rmtree(f"{self.game_directory}\\tempfiles")
else:
pass
self.ui()
except IndexError as err:
logging.error("IndexError")
logging.exception(err)
print("неверное значение\nперезапуск")
self.error()
except PermissionError as err:
logging.error("PermissionError")
logging.exception(err)
msg.showerror(title="Ошибка доступа", message="Не удается получить доступ к какому-то файлу."
"\nПопробуйте произвести запуск от имени администратора!")
exit()
except OverflowError as err:
logging.error("OverflowError")
logging.exception(err)
print("многацифер\nперезапуск")
self.error()
except ZeroSelector as err:
logging.error("ZeroSelector")
logging.exception(err)
print("неверное значение\nперезапуск")
self.error()
except ValueError as err:
logging.error("ValueError")
logging.exception(err)
print("неверное значение\nперезапуск")
self.error()
except FileNotFoundError as err:
logging.error("FileNotFoundError")
logging.exception(err)
logging.error("FileNotFoundError, запуск чекера")
self.checker()
self.finish()
except Exception as err:
os.system("cls")
logging.error("Неизвестная ошибка!!")
print("неизвестная ошибка, смотри логи")
logging.exception(err)
time.sleep(7)
break
self.setup_logger()
if not os.path.exists(f"{self.userappdata}\\config.ini"):
self.build_config()
else:
pass
os.chdir(self.userappdata)
self.build_list()
if os.path.exists(f"{self.game_directory}\\tempfiles\\"):
shutil.rmtree(f"{self.game_directory}\\tempfiles")
else:
pass
self.ui()

0 comments on commit 118c754

Please sign in to comment.