From 1e307b98c21872c7f2b0abf1461dc24fad6289a2 Mon Sep 17 00:00:00 2001 From: Hikari Date: Wed, 13 Apr 2022 18:55:34 +0000 Subject: [PATCH] Add automatic restart after installing dependencies \ reinstalling telethon --- hikka/__main__.py | 60 +++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/hikka/__main__.py b/hikka/__main__.py index a7fcde9..f32d0d0 100755 --- a/hikka/__main__.py +++ b/hikka/__main__.py @@ -30,6 +30,7 @@ import sys import getpass import os import subprocess +import atexit if ( getpass.getuser() == "root" @@ -70,6 +71,36 @@ def deps(e): ] ) + restart() + + +def restart(): + if "HIKKA_DO_NOT_RESTART" in os.environ: + print("Got in a loop, exiting") + sys.exit(0) + + print("🔄 Restarting...") + + atexit.register( + lambda: os.execl( + sys.executable, + sys.executable, + "-m", + os.path.relpath( + os.path.abspath( + os.path.dirname( + os.path.abspath(__file__), + ), + ), + ), + *(sys.argv[1:]), + ) + ) + + os.environ["HIKKA_DO_NOT_RESTART"] = "1" + + sys.exit(0) + if sys.version_info < (3, 8, 0): print("🚫 Error: you must use at least Python version 3.8.0") @@ -110,7 +141,7 @@ else: ] ) - print("🔄 Restart this script for changes to take effect!") + restart() try: from . import log @@ -118,33 +149,16 @@ else: log.init() except ModuleNotFoundError as e: # pragma: no cover deps(e) - try: - from . import log - - log.init() - except ModuleNotFoundError as e2: - print( - "🚫 Error while installing dependencies. Please, do this manually!\n" - f"{str(e2)}\n" - "Run: pip3 install -r requirements.txt" - ) - - sys.exit(1) + sys.exit(1) try: from . import main except ModuleNotFoundError as e: # pragma: no cover deps(e) - try: - from . import main - except ModuleNotFoundError as e2: - print( - "🚫 Error while installing dependencies. Please, do this manually!\n" - f"{str(e2)}\n" - "Run: pip3 install -r requirements.txt" - ) - - sys.exit(1) + sys.exit(1) if __name__ == "__main__": + if "HIKKA_DO_NOT_RESTART" in os.environ: + del os.environ["HIKKA_DO_NOT_RESTART"] + main.hikka.main() # Execute main function