From 8bc7bf5584727e7bf5508490dfed0b16ce8a7f0a Mon Sep 17 00:00:00 2001 From: cerberus Date: Sat, 27 Sep 2025 20:53:07 +0200 Subject: [PATCH] introduced src --- refit/src/modules/refit_logger.py | 32 ++++++++++++++++ refit/src/refit.py | 62 +++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 refit/src/modules/refit_logger.py create mode 100644 refit/src/refit.py diff --git a/refit/src/modules/refit_logger.py b/refit/src/modules/refit_logger.py new file mode 100644 index 0000000..857f1e8 --- /dev/null +++ b/refit/src/modules/refit_logger.py @@ -0,0 +1,32 @@ +import logging +import sys +from pathlib import Path + +log_dir = Path.home() / ".local" / "share" / "refit" +log_dir.mkdir(parents=True, exist_ok=True) + +log_file = log_dir / "refit.log" + + +logging.basicConfig( + level=logging.DEBUG, + format="%(asctime)s - %(levelname)s - %(message)s", + filename=log_file, +) +logger = logging.getLogger() + + +def handle_exception(exec_type, exec_value, exec_traceback): + if issubclass(exec_type, KeyboardInterrupt): + sys.__excepthook__(exec_type, exec_value, exec_traceback) + return + logger.error( + "External error accured", + exc_info=(exec_type, exec_value, exec_traceback), + ) + + +sys.excepthook = handle_exception + +logger.debug(f"Log path:\t{log_dir}") +logger.debug(f"Log file:\t{log_file}") diff --git a/refit/src/refit.py b/refit/src/refit.py new file mode 100644 index 0000000..7cd7590 --- /dev/null +++ b/refit/src/refit.py @@ -0,0 +1,62 @@ +import argparse +import sys + +from modules.refit_logger import logger + + +# Setting Global Variables +REFIT_VERSION = "Refit Beta 0.0.0" + + +# ---------------------------BEGIN FUNCTIONS--------------------------- +# will be in seperate file at some point +def refit_create(args): + logger.info("Running in create mode") + logger.debug(f"Arguments: {args}") + print(f"executing on {args.input}") + + +# ----------------------------END FUNCTIONS---------------------------- + + +# ---------------------------ARGPARSE START--------------------------- + +# Main Parser +parser = argparse.ArgumentParser( + prog="Refit", + description="This is a file and directory manipulation tool.\ + it can create, move and delete files and directories as well as \ + renaming them", + epilog=REFIT_VERSION, +) + +# Main Parser Arguments + +# Create Parser +subparser = parser.add_subparsers( + title="Commands", + dest="create", + required=False, +) + +# Create Parser Arguments +create_parser = subparser.add_parser( + "create", + help="creates a new file/folder", +) +create_parser.add_argument("-n", type=int, help="number of items") +create_parser.add_argument("-i", "--input", help="input file") +create_parser.set_defaults(func=refit_create) + +args = parser.parse_args() +# ---------------------------ARGPARSE END----------------------------- + + +# Dispatcher +if hasattr(args, "func"): + logger.debug("In hasattr()") + args.func(args) +else: + parser.print_help() + logger.info("No input, exiting with error:1") + sys.exit(1)