From 5428251ee0fcd709f6ad00d3776b31880f3306a1 Mon Sep 17 00:00:00 2001 From: Paillat Date: Sat, 22 Jul 2023 11:44:17 +0200 Subject: [PATCH] feat(main.py): move check_license_agreement function to a separate module for better organization and reusability feat(utils/license.py): create a new module to handle license agreement checking and display --- main.py | 52 ++--------------------------------------------- utils/license.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 50 deletions(-) create mode 100644 utils/license.py diff --git a/main.py b/main.py index 453015d..be047b8 100644 --- a/main.py +++ b/main.py @@ -2,64 +2,16 @@ import os import asyncio import logging import yaml -import hashlib -from pydoc import pager -from sys import platform from utils.settings import settings from classes.channel import Channel from utils.config import loadingmessage, bcolors from utils.misc import clear_screen, printm, getenv from utils.openaicaller import openai - +from utils.license import check_license_agreement + logging.basicConfig(level=logging.INFO) -async def check_license_agreement(): - h = hashlib.sha256() - with open('LICENSE', 'rb') as file: - chunk = file.read(1024) - while chunk: - h.update(chunk) - chunk = file.read(1024) - license_hash = h.hexdigest() - if settings.license_agreement_accepted == False or settings.license_agreement_accepted == None: - printm("You have to accept the license agreement before using this program.") - elif settings.license_agreement_accepted == True: - if settings.license_agreement_hash != license_hash: - printm("The license agreement has been updated since you last accepted it. Please accept it again.") - else: - return True - else: - printm("There was an error with the license agreement. Please accept it again.") - while True: - printm('\n\n') - inp = input("Type p to print the license agreement, a to accept it, q to quit the program or o to open the LICENSE in your default text editor: ") - if inp == "p": - input('You can use the "Enter" key to scroll down and the "q" key to quit the license agreement. Press "Enter" to continue.') - with open('LICENSE', 'r', encoding='utf-8') as f: - pager(f.read()) - elif inp == "a": - settings.set_setting('license_agreement_accepted', True) - settings.set_setting('license_agreement_hash', license_hash) - if os.path.exists('LICENSE.txt'): - os.remove('LICENSE.txt') - printm("License agreement accepted.") - return True - elif inp == "q": - printm("Quitting the program...") - raise KeyboardInterrupt - elif inp == "o": - dict_os_commands = { - "linux": "xdg-open", - "win32": "start", - "darwin": "open" - } - #copy the license file to a temporary txt file - with open('LICENSE', 'r', encoding='utf-8') as f: - with open('LICENSE.txt', 'w', encoding='utf-8') as f2: - f2.write(f.read()) - os.system(f"{dict_os_commands[platform]} LICENSE.txt") - async def main(): clear_screen() await check_license_agreement() diff --git a/utils/license.py b/utils/license.py new file mode 100644 index 0000000..c56ab50 --- /dev/null +++ b/utils/license.py @@ -0,0 +1,53 @@ +import hashlib +import os + +from utils.settings import settings +from utils.misc import printm +from pydoc import pager +from sys import platform + +async def check_license_agreement(): + h = hashlib.sha256() + with open('LICENSE', 'rb') as file: + chunk = file.read(1024) + while chunk: + h.update(chunk) + chunk = file.read(1024) + license_hash = h.hexdigest() + if settings.license_agreement_accepted == False or settings.license_agreement_accepted == None: + printm("You have to accept the license agreement before using this program.") + elif settings.license_agreement_accepted == True: + if settings.license_agreement_hash != license_hash: + printm("The license agreement has been updated since you last accepted it. Please accept it again.") + else: + return True + else: + printm("There was an error with the license agreement. Please accept it again.") + while True: + printm('\n\n') + inp = input("Type p to print the license agreement, a to accept it, q to quit the program or o to open the LICENSE in your default text editor: ") + if inp == "p": + input('You can use the "Enter" key to scroll down and the "q" key to quit the license agreement. Press "Enter" to continue.') + with open('LICENSE', 'r', encoding='utf-8') as f: + pager(f.read()) + elif inp == "a": + settings.set_setting('license_agreement_accepted', True) + settings.set_setting('license_agreement_hash', license_hash) + if os.path.exists('LICENSE.txt'): + os.remove('LICENSE.txt') + printm("License agreement accepted.") + return True + elif inp == "q": + printm("Quitting the program...") + raise KeyboardInterrupt + elif inp == "o": + dict_os_commands = { + "linux": "xdg-open", + "win32": "start", + "darwin": "open" + } + #copy the license file to a temporary txt file + with open('LICENSE', 'r', encoding='utf-8') as f: + with open('LICENSE.txt', 'w', encoding='utf-8') as f2: + f2.write(f.read()) + os.system(f"{dict_os_commands[platform]} LICENSE.txt") \ No newline at end of file