Files
python/refit/src/modules/librefit.py

181 lines
6.0 KiB
Python
Raw Normal View History

2025-10-01 16:07:08 +02:00
import os
import sys
2025-09-28 17:19:20 +02:00
from .refit_logger import logger
2025-10-02 15:40:36 +02:00
# TODO: Make a standard function for reading config files, so it is
# reusable
2025-09-28 17:19:20 +02:00
2025-10-03 19:13:53 +02:00
def get_standard_name_number(current_number: int, number_str_length: int) -> str:
"""Returns a number string filled to the length of the input number
This function returns the number in a standartized way as a string.
As input it takes the current number of the string to build and a
number which determines the length of the string.
Args:
2025-09-30 20:56:27 +02:00
current_number (str): The current number of the item.
number_str_length (int): The length of the string which gets returned.
Examples:
>>> get_standard_name_number(1, 2)
'01'
>>> get_standard_name_number(23, 4)
'0023'
"""
2025-09-29 21:38:42 +02:00
# logger.debug(
# f"FUNC: get_standard_name_number() index={current_number} string_length={number_str_length}"
# )
2025-10-03 19:13:53 +02:00
temp_current_number = str(current_number)
standard_name_number = str.zfill(temp_current_number, number_str_length)
2025-09-29 21:38:42 +02:00
# logger.debug(
# f"FUNC: get_standard_name_number() return value= '{standard_name_number}'"
# )
2025-09-28 17:19:20 +02:00
return standard_name_number
2025-09-30 20:56:27 +02:00
def get_standard_folder_name(name: str) -> str:
"""Returnes a standard name either from a list or the default value.
This function sanitizes the input, which gets passed as a list or None from
argparse. The function either chooses the first entry of the list, given to
the --name argument or returns the default value 'directory'
Args:
name (list[str] | None): A list of names if passed to the --name argument
or None if no name is passed.
Returns:
str: The file name. Returns 'file' as default value if name argument is 'None'
otherwise the first element of the list.
Examples:
>>> get_standard_file_name(None)
'file'
>>> get_standard_file_name(["example"])
'example'
>>> get_standard_file_name(["directory_name", "example"])
'directory_name'
"""
2025-09-28 17:19:20 +02:00
logger.debug(
f"FUNC: get_standard_folder_name() MSG: entered function with value: '{name}'"
)
standard_folder_name = name[0] if name is not None else "directory"
logger.debug(
f"FUNC: get_standard_folder_name() MSG: exiting function with folder name: '{standard_folder_name}'"
)
2025-09-28 17:19:20 +02:00
return standard_folder_name
2025-09-29 20:11:16 +02:00
def get_standard_file_name(name) -> str:
"""Returnes a name either from a list or the default value.
This function sanitizes the input, which gets passed as a list or None from
argparse. The function either chooses the first entry of the list, given to
the --name argument or returns the default value 'file'
Args:
name (list[str] | None): A list of names if passed to the --name argument
or None if no name is passed.
Returns:
str: The file name. Returns 'file' as default value if name argument is 'None'
otherwise the first element of the list.
Examples:
>>> get_standard_file_name(None)
'file'
>>> get_standard_file_name(["example"])
'example'
>>> get_standard_file_name(["file_name", "example"])
'file_name'
"""
2025-09-29 20:11:16 +02:00
logger.debug(
f"FUNC: get_standard_file_name() MSG: entered function with name='{name}'"
)
standard_file_name = name[0] if name is not None else "file"
logger.debug(
f"FUNC: get_standard_file_name MSG: Continuing with expected input: '{standard_file_name}'"
)
2025-09-29 20:11:16 +02:00
logger.debug("FUNC get_standard_file_name() MSG: Exit")
return standard_file_name
2025-10-01 16:07:08 +02:00
2025-10-01 22:20:23 +02:00
def get_current_path(path) -> str:
2025-10-01 16:07:08 +02:00
"""Checks if the path argument is emty and applies the current directory as working path.
2025-10-01 22:20:23 +02:00
This function takes an list with strings as an input. If the input is `None` the current
2025-10-01 16:07:08 +02:00
directory is taken as the working directory.
If the path is passed, a check for its existence takes place.
2025-10-01 22:20:23 +02:00
2025-10-01 16:07:08 +02:00
Args:
path (str): _The current working directory._
Returns:
str: _Returns the path of the current directory after check for existence_
"""
2025-10-02 15:40:36 +02:00
2025-10-01 22:20:23 +02:00
logger.debug(f"FUNC: get_current_path() MSG: entered function with path = '{path}'")
2025-10-01 16:07:08 +02:00
if path is None:
2025-10-02 15:11:40 +02:00
# Set the current directory if none is passed with the command.
2025-10-01 16:07:08 +02:00
path = "."
2025-10-02 15:11:40 +02:00
logger.warning(
f"FUNC: {get_current_path.__name__}() MSG: Path now has the value: '{path}'"
2025-10-01 22:20:23 +02:00
)
2025-10-01 16:07:08 +02:00
return path
else:
2025-10-02 15:11:40 +02:00
# Checks if the path, entered by the user, exists.
2025-10-01 16:07:08 +02:00
if os.path.exists(path) is True:
2025-10-01 22:20:23 +02:00
logger.debug(
f"FUNC: {get_current_path.__name__} MSG: Path '{path}' exists, continue...."
)
2025-10-01 16:07:08 +02:00
return path
else:
2025-10-01 22:20:23 +02:00
ERROR_MESSAGE = (
f"FUNC: {get_current_path.__name__} MSG: '{path}' does not exist"
)
logger.warning(ERROR_MESSAGE)
2025-10-01 16:07:08 +02:00
print(ERROR_MESSAGE)
sys.exit(1)
2025-10-03 19:13:53 +02:00
# FIXME: th function needs some attention
# TODO:
# - add proper debugging
# - make it walk down one directory.
def create_recursive_folders(
input_path, target_depth, current_depth, width, curret_width
):
"""Creates a recursive directory structure with y as depth and x as width"""
if current_depth == target_depth:
sys.exit(1)
# length_width = str(len(width))
length_width = len(str(width))
logger.debug(
f"FUNC: create_recursive_folders(length_width) MSG: length_width='{length_width}'"
)
while curret_width < width:
# TODO: fix the issue, that the number gets appended to an existing number
new_directory_name = "sub_dir" + get_standard_name_number(length_width, width)
new_directory_path = os.path.join(input_path, new_directory_name)
print(new_directory_path)
curret_width += 1
create_recursive_folders(
new_directory_path,
target_depth,
width,
current_depth + 1,
curret_width,
)
# create_recursive_folders(".", 2, 0, 3)