Skip to content

Commit

Permalink
v2.9.5
Browse files Browse the repository at this point in the history
  • Loading branch information
Skrepysh committed Jul 9, 2023
1 parent 30332bc commit 9e41ecd
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 72 deletions.
24 changes: 15 additions & 9 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,31 @@
from pyselector import PySelector
import argparse
parser = argparse.ArgumentParser(description='Привет, от разработчика!')
parser.add_argument("--devmode", default=0, help="НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ПАРАМЕТР!!!")
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, чтобы восстановить бэкап")
args = parser.parse_args()

program_version = "2.9"
program_version = "2.9.5"
ok = PySelector(program_version)
args.mp = str(args.mp)
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":
if args.restore == "0":
ok.run()
ok.run(select2="restore")
if args.mp != 0:
ok.setup_logger()
ok.read_config()
ok.build_list()
ok.load_modpack(args.mp - 1)
else:
ok.run(select2=args.mp)
if args.restore != "0":
ok.setup_logger()
ok.read_config()
ok.restore_backup()
else:
ok.run()
129 changes: 66 additions & 63 deletions pyselector.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import shutil
import time
from progress.bar import Bar
from pathlib import Path
import datetime as dt
from tkinter import messagebox as msg
from sys import exit
Expand All @@ -18,6 +17,7 @@ class ZeroSelector(Exception):
class PySelector:
def __init__(self, version):
self.dt = dt.datetime.now()
self.user_choice = "ОШИБКА"
self.list = ["ОШИБКА!", "УДАЛИТЕ ЭТУ ВЕРСИЮ ПРОГРАММЫ!!!"]
self.configfile_name = 'config'
self.version = str(version)
Expand All @@ -40,7 +40,7 @@ def finish():

def setup_logger(self, mode=0):
if not os.path.exists(f"{self.userappdata}\\logs"):
os.mkdir(f"{self.userappdata}\\logs")
os.makedirs(f"{self.userappdata}\\logs")
if mode == 0:
logging.basicConfig(level=logging.DEBUG,
filename=f"{self.userappdata}\\logs\\{self.dt.hour}_{self.dt.minute}_"
Expand Down Expand Up @@ -126,11 +126,8 @@ def checker(self):
errs = 0
logging.info("Чекер завершил работу")

def worker(self, select="0"):
logging.info("Worker запущен")
os.chdir(f"{self.userappdata}\\modpacks\\")
self.list = [e for e in os.listdir() if os.path.isdir(e)]
logging.info("Составлен список модпаков", )
def ui(self):
logging.info("UI запущен")
os.chdir(self.game_directory)
print("Привет!")
print("Версия программы: " + self.version)
Expand All @@ -151,29 +148,12 @@ def worker(self, select="0"):
print(str(counter) + str(divider) + str(ver))
counter += 1
print("*")
logging.info(f"Количество модпаков: {str(counter)}")
logging.info(f"Количество модпаков: {int(counter) - 1}")
print("Чтобы восстановить бэкап напишите restore")
if select == "0":
logging.info("Ждем выбора модпака пользователем...")
selector = str(input("Выберите версию: "))
else:
selector = str(select)
logging.info("Ждем выбора модпака пользователем...")
selector = str(input("Выберите версию: "))
if selector == "restore":
logging.info("Пользователь запустил восстановление бэкапа")
pb4 = Bar("Восстановление", max=3)
shutil.rmtree(f"{self.game_directory}\\mods")
logging.info("Папка mods удалена")
pb4.next()
shutil.copytree(f"{self.userappdata}\\backup", f"{self.game_directory}\\tempfiles\\")
logging.info("Бэкап скопирован во временную папку")
pb4.next()
p = Path(f"{self.game_directory}\\tempfiles\\")
p.rename("mods")
logging.info("Папка переименована в mods, бэкап восстановлен")
pb4.next()
pb4.finish()
print("Бэкап восстановлен")
self.finish()
self.restore_backup()
elif selector == "q" or selector == "quit":
logging.info("Пользователь ввел команду q!")
self.finish()
Expand All @@ -183,32 +163,12 @@ def worker(self, select="0"):
logging.error("Пользователь ввел '0'!!!")
raise ZeroSelector
else:
user_choice = self.list.pop(selector - 1)
logging.info(f"Пользователь выбрал модпак: {selector} ___ Имя модпака: {user_choice}")
print("Выбрана версия " + user_choice)
print("работаю..")
logging.info("Начата работа над модпаком...")
pb5 = Bar("Выполнение", max=5)
shutil.rmtree(f"{self.userappdata}\\backup")
logging.info("Удален текущий бэкап")
pb5.next()
shutil.copytree(f"{self.game_directory}\\mods", f"{self.userappdata}\\backup")
logging.info("Сделан бэкап текущих модов")
pb5.next()
shutil.rmtree(f"{self.game_directory}\\mods")
logging.info("Папка mods удалена")
pb5.next()
shutil.copytree(f"{self.userappdata}\\modpacks\\{user_choice}", f"{self.game_directory}\\tempfiles\\")
logging.info("Модпак скопирован в директорию игры")
pb5.next()
p = Path(f"{self.game_directory}\\tempfiles\\")
p.rename("mods")
logging.info("Модпак переименован в mods")
pb5.next()
pb5.finish()
print("готово")
self.finish()
logging.info("Worker завершил работу")
self.load_modpack(selector - 1)

def build_list(self):
os.chdir(f"{self.userappdata}\\modpacks")
self.list = [e for e in os.listdir() if os.path.isdir(e)]
logging.info("Составлен список модпаков")

def build_config(self):
logging.info('Запущен build_config')
Expand All @@ -218,8 +178,8 @@ def build_config(self):
'; do not use parameter below, if do not know, what are you doing!!!!\nprogram = ')
file.close()
logging.info('Конфиг создан успешно')
msg.showerror(title="Файлы были повреждены!",
message='Папка с данными была повреждена:-( Проверьте config.ini!!!')
msg.showinfo(title="Привет!",
message='Ты запустил эту программу в первый раз, и ее надо настроить. Проверь config.ini!')
os.system(f"notepad {self.userappdata}/config.ini")
logging.info('Конфиг открыт в блокноте')
self.error()
Expand Down Expand Up @@ -263,15 +223,61 @@ def devmode(self):
else:
pass

def run(self, select2="0"):
def load_modpack(self, modpack_number):
if modpack_number > len(self.list) - 1:
self.run()
else:
pass
self.user_choice = self.list[modpack_number]
print("Выбрана версия " + self.user_choice)
print("работаю..")
logging.info("Начата работа над модпаком...")
pb5 = Bar("Выполнение", max=4)
shutil.rmtree(f"{self.userappdata}\\backup")
logging.info("Удален текущий бэкап")
pb5.next()
shutil.copytree(f"{self.game_directory}\\mods", f"{self.userappdata}\\backup")
logging.info("Сделан бэкап текущих модов")
pb5.next()
shutil.rmtree(f"{self.game_directory}\\mods")
logging.info("Папка mods удалена")
pb5.next()
shutil.copytree(f"{self.userappdata}\\modpacks\\{self.user_choice}", f"{self.game_directory}\\mods\\")
logging.info("Модпак скопирован в папку mods")
logging.info("ГОТОВО!")
pb5.next()
pb5.finish()
print("готово")
self.finish()

def restore_backup(self):
logging.info("Пользователь запустил восстановление бэкапа")
pb4 = Bar("Восстановление", max=2)
if os.path.exists(f"{self.game_directory}\\mods"):
shutil.rmtree(f"{self.game_directory}\\mods")
else:
pass
logging.info("Папка mods удалена")
pb4.next()
shutil.copytree(f"{self.userappdata}\\backup", f"{self.game_directory}\\mods\\")
logging.info("Бэкап восстановлен")
pb4.next()
pb4.finish()
print("Бэкап восстановлен")
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)
if not os.path.exists("logs"):
os.mkdir("logs")
self.read_config()
self.build_list()
self.checker()
logging.info(f'Путь к программе: {self.program_directory}')
logging.info(f'Путь к игре: {self.game_directory}')
Expand All @@ -280,10 +286,7 @@ def run(self, select2="0"):
shutil.rmtree(f"{self.game_directory}\\tempfiles")
else:
pass
if select2 == "0":
self.worker()
else:
self.worker(select=select2)
self.ui()
except IndexError as err:
logging.error("IndexError")
logging.exception(err)
Expand Down

0 comments on commit 9e41ecd

Please sign in to comment.