Skip to content

Commit

Permalink
v2.22
Browse files Browse the repository at this point in the history
Updated program to version 2.22
  • Loading branch information
Skrepysh committed Oct 14, 2023
1 parent 423a370 commit 8e3ef4c
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 28 deletions.
5 changes: 2 additions & 3 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@
group1.add_argument("--restore", default=0, nargs='?', const=1, help="используйте --restore, чтобы восстановить бэкап")
args = parser.parse_args()

program_version = "2.21"
program_version = "2.22"
ok = MineSquid(program_version)
logging = ok.logging

while True:
try:
ok.setup_logger()
Expand All @@ -33,7 +32,7 @@
logging.info(f'Путь к программе: {ok.program_directory}')
logging.info(f'Путь к игре: {ok.game_directory}')
logging.info(f'Путь к папке с пользовательскими данными: {ok.userappdata}')
if (int(args.mpnum) != 0 and int(args.mpnum) > 0) and int(args.mpnum) < len(ok.list) - 1:
if (int(args.mpnum) != 0 and int(args.mpnum) > 0) and int(args.mpnum) < len(ok.list)+1:
ok.load_modpack(modpack_number=(int(args.mpnum) - 1))
elif str(args.mpname) in ok.list:
ok.load_modpack(modpack_number=ok.list.index(args.mpname))
Expand Down
76 changes: 52 additions & 24 deletions minesquid.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import logging
import os
from sys import exit, argv
from shutil import rmtree, copytree
from shutil import rmtree, copy
from time import sleep
from progress.bar import Bar
from datetime import datetime
Expand All @@ -23,6 +23,7 @@ class Restart(Exception):

class MineSquid:
def __init__(self, version):
self.username = os.getlogin()
self.dt = datetime.now()
self.user_choice = ""
self.list = []
Expand Down Expand Up @@ -78,14 +79,19 @@ def read_config(self):
self.repair_config()
raise Restart
self.config.read(f"{self.userappdata}\\config.ini")
game_directory = self.config["paths"]["game_path"].replace('"', '').replace('/', '\\')
game_directory = self.config['options']['game_path'].replace('"', '').replace('/', '\\')
custom_username = self.config['options']['custom_username']
logging.info("Конфиг прочитан")
if game_directory == "default" and os.path.exists(f'{os.environ["appdata"]}\\.minecraft'):
self.game_directory = f'{os.environ["appdata"]}\\.minecraft'
elif os.path.exists(game_directory):
self.game_directory = game_directory
else:
pass
if custom_username == 'default':
pass
else:
self.username = custom_username
logging.info("Конфиг обработан")

def checker(self):
Expand Down Expand Up @@ -123,7 +129,7 @@ def checker(self):

def ui(self):
logging.info("UI запущен")
print(f"Привет, {os.getlogin()}!")
print(f"Привет, {self.username}!")
print("Версия программы: " + self.version)
print(f'Путь к папке с игрой: {self.game_directory}')
print("Список модпаков: ")
Expand Down Expand Up @@ -177,13 +183,13 @@ def build_list(self):
os.chdir(f"{self.userappdata}\\modpacks")
self.list = [e for e in os.listdir() if os.path.isdir(e)]
else:
self.list = ["Папка с игрой не назначена", "Модпаки недоступны"]
self.list = ["Папка с игрой не назначена", "Модпаки недоступны", "Для выбора папки введите set"]
logging.info("Составлен список модпаков")

def edit_config(self):
logging.info('Запущен edit_config')
logging.info("Начато редактирование config файла")
self.config.set("paths", "game_path", self.enter_path())
self.config.set("options", "game_path", self.enter_path())
with open(f"{self.userappdata}\\config.ini", "w") as f:
self.config.write(f)
logging.info('Конфиг отредактирован успешно')
Expand All @@ -195,33 +201,43 @@ def repair_config(self):
else:
pass
with open(f"{self.userappdata}\\config.ini", "w") as cfg:
self.config.add_section("paths")
self.config.set("paths", "game_path", "default")
self.config.add_section("options")
self.config.set("options", "game_path", "default")
self.config.set("options", "custom_username", "default")
self.config.write(cfg)
self.edit_config()
logging.info('Конфиг восстановлен')

def load_modpack(self, modpack_number):
if self.game_directory != 'не назначена':
self.user_choice = self.list[modpack_number]
fileslist1 = os.listdir(f"{self.userappdata}\\modpacks\\{self.user_choice}")
fileslist2 = os.listdir(f"{self.game_directory}\\mods")
print("Выбрана версия " + self.user_choice)
print("работаю..")
logging.info("Начата работа над модпаком...")
pb1 = Bar("Выполнение", max=4, fill='@')
rmtree(f"{self.userappdata}\\backup")
pb1 = Bar("Резервное коп-е", max=len(fileslist2), fill='@')
for file in os.listdir(f'{self.userappdata}\\backup'):
os.remove(f'{self.userappdata}\\backup\\{file}')
logging.info("Удален текущий бэкап")
pb1.next()
copytree(f"{self.game_directory}\\mods", f"{self.userappdata}\\backup")
for file in fileslist2:
copy(src=f"{self.game_directory}\\mods\\{file}", dst=f"{self.userappdata}\\backup")
pb1.next()
logging.info("Сделан бэкап текущих модов")
pb1.next()
rmtree(f"{self.game_directory}\\mods")
logging.info("Папка mods удалена")
pb1.next()
copytree(f"{self.userappdata}\\modpacks\\{self.user_choice}", f"{self.game_directory}\\mods\\")
pb1.finish()
pb2 = Bar("Выполнение", max=len(fileslist1)+1, fill='@')
for file in os.listdir(f"{self.game_directory}\\mods\\"):
os.remove(f"{self.game_directory}\\mods\\{file}")
logging.info("Папка mods очищена")
pb2.next()
for file in fileslist1:
copy(src=f"{self.userappdata}\\modpacks\\{self.user_choice}\\{file}",
dst=f"{self.game_directory}\\mods")
pb2.next()
# copytree(f"{self.userappdata}\\modpacks\\{self.user_choice}", f"{self.game_directory}\\mods\\")
logging.info("Модпак скопирован в папку mods")
logging.info("ГОТОВО!")
pb1.next()
pb1.finish()
pb2.finish()
print("готово")
self.finish()
else:
Expand All @@ -236,19 +252,31 @@ def restore_backup(self):
sleep(1)
raise Restart
else:
fileslist = os.listdir(f"{self.game_directory}\\mods")
fileslist2 = os.listdir(f'{self.userappdata}\\backup')
bob = False
logging.info("Пользователь запустил восстановление бэкапа")
pb2 = Bar("Восстановление", max=3, fill='@')
if os.path.exists(f"{self.game_directory}\\mods"):
pb2.next()
pb1 = Bar("Резервное коп-е", max=len(fileslist), fill='@')
bob = True
copytree(f"{self.game_directory}\\mods", f"{self.userappdata}\\bob", dirs_exist_ok=True)
if not os.path.exists(f"{self.userappdata}\\bob\\"):
os.mkdir(f"{self.userappdata}\\bob\\")
# copytree(f"{self.game_directory}\\mods", f"{self.userappdata}\\bob", dirs_exist_ok=True)
for file in fileslist:
copy(f"{self.game_directory}\\mods\\{file}", f"{self.userappdata}\\bob\\")
pb1.next()
logging.info("Бэкап сделан перед восстановлением бэкапа)")
rmtree(f"{self.game_directory}\\mods")
logging.info("Папка mods удалена")
for file in os.listdir(f'{self.game_directory}\\mods'):
os.remove(f'{self.game_directory}\\mods\\{file}')
logging.info("Папка mods очищена")
pb1.finish()
else:
pass
pb2 = Bar('Восстановление', max=len(fileslist2)+2, fill='@')
for file in fileslist2:
copy(f'{self.userappdata}\\backup\\{file}', f'{self.game_directory}\\mods')
pb2.next()
copytree(f"{self.userappdata}\\backup", f"{self.game_directory}\\mods\\")
# copytree(f"{self.userappdata}\\backup", f"{self.game_directory}\\mods\\")
pb2.next()
if bob:
rmtree(f"{self.userappdata}\\backup")
Expand Down
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.21
2.22

0 comments on commit 8e3ef4c

Please sign in to comment.