diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 11bfce1..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 8d03ef8..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/ok.iml b/.idea/ok.iml deleted file mode 100644 index 74d515a..0000000 --- a/.idea/ok.iml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/exceptor.py b/exceptor.py new file mode 100644 index 0000000..7504939 --- /dev/null +++ b/exceptor.py @@ -0,0 +1,42 @@ +from worker import worker, verpicker, finish +import os +import time +from filerpy import version_define, dirdefine +from preparator import preparator +from preparator import error +programdir = dirdefine("settings.txt", "prog") +minedir = dirdefine("settings.txt", "mine") + +def run(version): + progver = version_define(version) + if preparator("init") == "stopnow": + finish("normal") + else: + pass + while True: + try: + os.chdir(f"{programdir}/mods") + vers = [e for e in os.listdir() if os.path.isdir(e)] + worker(verpicker(progver, vers)) + break + except IndexError: + print("неверное значение\nперезапуск") + error() + except OverflowError: + print("многацифер\nперезапуск") + error() + except ValueError: + print("что ты несешь\nперезапуск") + error() + except SyntaxError: + print("Что-то пошло не так!") + except FileNotFoundError: + if preparator("error") == "stopnow": + break + else: + os.system("cls") + continue + except Exception: + print("неизвестная ошибка") + time.sleep(3) + break diff --git a/filerpy.py b/filerpy.py index 47518a6..7b578b2 100644 --- a/filerpy.py +++ b/filerpy.py @@ -1,20 +1,21 @@ import os - def dirdefine(file, type): if type == "mine": minedir1 = open(file, "r") minedir = minedir1.readlines() minedir1.close() - ok = minedir.pop(0).split("\n") - ok = ok.pop(0).split("\n") - ok = ok.pop(0) - return ok + result = minedir.pop(0).split("\n") + result = result.pop(0).split("\n") + result = result.pop(0) + return result if type == "prog": - programdir1 = open(file, "r") - programdir = programdir1.readlines() - programdir1.close() - ok2 = programdir.pop(1).split("/n") - ok2 = ok2.pop(0).split("\n") - ok2 = ok2.pop(0) - return ok2 \ No newline at end of file + result2 = os.getcwd() + return result2 +def version_define(version): + version = str(version) + unknown = "unknown" + if version == "" or version == " ": + return unknown + else: + return version diff --git a/main.py b/main.py index f5e47c2..f6d3c61 100644 --- a/main.py +++ b/main.py @@ -1,60 +1,9 @@ -import os -import shutil -from pathlib import Path -import time -from filerpy import dirdefine -programdir = str(dirdefine("settings.txt", "prog")) -minedir = str(dirdefine("settings.txt", "mine")) -os.chdir(f"{programdir}/mods") -vers = [e for e in os.listdir() if os.path.isdir(e)] +from exceptor import run -def finish(): - print("окно закроется через 3 секунды") - time.sleep(3) - while True: - break -def main(): - print("Привет!") - versamount = len(vers) - for i, item in enumerate(vers): - print(i + 1, "> ", item) - print("Чтобы восстановить бэкап напишите restore") - selector = str(input("Выберите версию: ")) - if selector == "restore": - os.chdir(minedir) - shutil.rmtree(f"{minedir}/mods") - os.chdir(programdir) - shutil.copytree(f"{programdir}/backup", f"{minedir}/pySelector/") - os.chdir(minedir) - p = Path(f"{minedir}/pySelector/") - p.rename("mods") - print("Бэкап восстановлен") - return "restok" - else: - selector = int(selector) - a = vers.pop(selector - 1) - print("Выбрана версия " + a) - return a +program_version = 2.3 -def worker(version): - if version == "restok": - finish() - else: - print("работаю..") - os.chdir(minedir) - shutil.rmtree(f"{programdir}/backup") - shutil.copytree(f"{minedir}/mods", f"{programdir}/backup") - shutil.rmtree(f"{minedir}/mods") - os.chdir(f"{programdir}/mods/") - shutil.copytree(f"{programdir}/mods/{version}", f"{minedir}/pySelector") - os.chdir(minedir) - p = Path(f"{minedir}/pySelector/") - p.rename("mods") - print("готово") - finish() +run(program_version) - - -worker(main()) \ No newline at end of file +#please, check settings.txt before panic about program is not working \ No newline at end of file diff --git a/main.spec b/main.spec deleted file mode 100644 index 8ce84c0..0000000 --- a/main.spec +++ /dev/null @@ -1,45 +0,0 @@ -# -*- mode: python ; coding: utf-8 -*- - - -block_cipher = None - - -a = Analysis( - ['main.py'], - pathex=[], - binaries=[], - datas=[], - hiddenimports=[], - hookspath=[], - hooksconfig={}, - runtime_hooks=[], - excludes=[], - win_no_prefer_redirects=False, - win_private_assemblies=False, - cipher=block_cipher, - noarchive=False, -) -pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) - -exe = EXE( - pyz, - a.scripts, - a.binaries, - a.zipfiles, - a.datas, - [], - name='main', - debug=False, - bootloader_ignore_signals=False, - strip=False, - upx=True, - upx_exclude=[], - runtime_tmpdir=None, - console=True, - disable_windowed_traceback=False, - argv_emulation=False, - target_arch=None, - codesign_identity=None, - entitlements_file=None, - icon=['E:\\Загрузки\\ico.ico'], -) diff --git a/preparator.py b/preparator.py new file mode 100644 index 0000000..767895e --- /dev/null +++ b/preparator.py @@ -0,0 +1,73 @@ +import os +import time +from filerpy import dirdefine +programdir = dirdefine("settings.txt", "prog") +minedir = dirdefine("settings.txt", "mine") + +def error(): + time.sleep(2) + os.system("cls") + +def preparator(type_of_work): + os.chdir(programdir) + if type_of_work == "error": + if not os.path.exists(f"{programdir}/backup"): + print("Нету папки backup:-(") + os.mkdir(f"{os.getcwd()}/backup") + time.sleep(2) + print("Папка создана, повторите попытку") + error() + try: + if not os.path.exists(f"{minedir}/mods"): + print("Нету папки mods в директории игры:-(") + os.chdir(minedir) + os.mkdir("mods") + print("Папка создана, повторите попытку") + error() + except FileNotFoundError: + print("Не удалось создать папку!\nПроверьте settings.txt") + time.sleep(2) + return "stopnow" + if not os.path.exists(f"{programdir}/mods"): + print("Отсутствует хранилище модпаков:-(") + os.chdir(programdir) + os.mkdir(f"{os.getcwd()}/mods") + readme = open(f"{os.getcwd()}/mods/readME PLS.txt", "w") + readme.write("put your modpacks in this folder") + readme.close() + print("В корне программы создана папка mods, поместите туда свои модпаки") + time.sleep(2) + error() + else: + print("Какой-то файл/папка не найден.\nПроверьте settings.txt") + time.sleep(2) + return "stopnow" + if type_of_work == "init": + if not os.path.exists(f"{programdir}/backup"): + print("Нету папки backup:-(") + os.mkdir(f"{os.getcwd()}/backup") + time.sleep(2) + print("Папка создана, повторите попытку") + error() + try: + if not os.path.exists(f"{minedir}/mods"): + print("Нету папки mods в директории игры:-(") + os.chdir(minedir) + os.mkdir("mods") + print("Папка создана, повторите попытку") + error() + except FileNotFoundError: + print("Не удалось создать папку!\nПроверьте settings.txt") + time.sleep(2) + return "stopnow" + if not os.path.exists(f"{programdir}/mods"): + print("Отсутствует хранилище модпаков:-(") + os.chdir(programdir) + os.mkdir(f"{os.getcwd()}/mods") + readme = open(f"{os.getcwd()}/mods/readME PLS.txt", "w") + readme.write("put your modpacks in this folder") + readme.close() + print("В корне программы создана папка mods, поместите туда свои модпаки") + time.sleep(2) + error() + diff --git a/settings.txt b/settings.txt index a055f5f..03a711a 100644 --- a/settings.txt +++ b/settings.txt @@ -1,4 +1,3 @@ -E:/minecraft/game -E:/pySelector -// first line is path to pySelector.exe (not including / and "pySelector.exe" -// second line is minecraft home dir (there you can find "config", "versions", "mods" and other folder \ No newline at end of file +minecraft directory !!DO NOT use quotes!! +// FIRST line is minecraft home dir (there you can find "config", "versions", "mods" and other folders) +// PLS FILL FIRST LINE!!!!! diff --git a/worker.py b/worker.py new file mode 100644 index 0000000..9ade7ad --- /dev/null +++ b/worker.py @@ -0,0 +1,75 @@ +import os +import shutil +import time +from pathlib import Path +from filerpy import dirdefine +programdir = str(dirdefine("settings.txt", "prog")) +minedir = str(dirdefine("settings.txt", "mine")) + + + +def finish(type): + if type == "error": + print("Использовать число 0 нельзя!") + print("окно закроется через 3 секунды") + time.sleep(3) + while True: + break + if type == "normal": + print("окно закроется через 3 секунды") + time.sleep(3) + while True: + break + +def verpicker(progver, vers): + print("Привет!") + print("Версия программы: " + progver) + print("Список модпаков: ") + counter = 1 + divider = ". " + for ver in vers: + print(str(counter) + str(divider) + str(ver)) + counter += 1 + print("Чтобы восстановить бэкап напишите restore") + selector = str(input("Выберите версию: ")) + if selector == "restore": + os.chdir(minedir) + shutil.rmtree(f"{minedir}/mods") + os.chdir(programdir) + shutil.copytree(f"{programdir}/backup", f"{minedir}/pySelector/") + os.chdir(minedir) + p = Path(f"{minedir}/pySelector/") + p.rename("mods") + print("Бэкап восстановлен") + return "restok" + elif selector == "q" or selector == "quit": + return "stop_soft" + else: + selector = int(selector) + if selector == 0: + return "stop" + else: + a = vers.pop(selector - 1) + print("Выбрана версия " + a) + return a + +def worker(version): + if version == "restok": + finish("normal") + elif version == "stop": + finish("error") + elif version == "stop_soft": + finish("normal") + else: + print("работаю..") + os.chdir(minedir) + shutil.rmtree(f"{programdir}/backup") + shutil.copytree(f"{minedir}/mods", f"{programdir}/backup") + shutil.rmtree(f"{minedir}/mods") + os.chdir(f"{programdir}/mods/") + shutil.copytree(f"{programdir}/mods/{version}", f"{minedir}/pySelector") + os.chdir(minedir) + p = Path(f"{minedir}/pySelector/") + p.rename("mods") + print("готово") + finish("normal")