From 16aba4c60f6429e7c77dd7a1554e30a993cb7693 Mon Sep 17 00:00:00 2001 From: cerberus Date: Sun, 12 Oct 2025 19:45:07 +0200 Subject: [PATCH] added doc strings to librefit and cleaned refit.py --- refit/src/modules/librefit.py | 63 ++++++++++++++++++++++++++++------- refit/src/refit.py | 42 +++++++++++++++++------ 2 files changed, 82 insertions(+), 23 deletions(-) diff --git a/refit/src/modules/librefit.py b/refit/src/modules/librefit.py index 80013cb..a410f24 100644 --- a/refit/src/modules/librefit.py +++ b/refit/src/modules/librefit.py @@ -153,15 +153,30 @@ def get_current_path(path) -> str: sys.exit(1) -def create_linear_directories(input_path, target_depth, current_depth, name): - """Creates the linear directories for the x*y pattern""" +def create_linear_directories( + input_path: str, target_depth: int, current_depth: int, name +): + """Creates the linear directories for the x*y pattern + + If no name is given the name of the level is defaulted to 'level'. + Otherwise it takes the second input of the --name argument. In the + end it appends the number of the folder. + + Args: + input_path ( str ): _The current working directory. + target_depth ( int ): _The depth on how deepo directories are created._ + current_depth ( int ): _The current depth of the folder creation._ + name ( list[str] | None ): _The name of the level directories._ + """ - # TODO: - add dynamic name input - # - add docstring # logger.debug( # f"FUNC: create_linear_directories(entered) VALUES: path='{input_path}', target_depth='{target_depth}', current_depth='{current_depth}'" # ) + # TODO: Find a way on how to specify the type in the function call + # and let the if statement pass. + + # Get base directory name if name is None: base_name = "level" else: @@ -169,39 +184,63 @@ def create_linear_directories(input_path, target_depth, current_depth, name): if current_depth > target_depth: return - + # Create directory name directory_name = ( base_name + "_" + get_standard_name_number(current_depth, get_int_length(target_depth)) ) + + # Create the path where to create directory path = os.path.join(input_path, directory_name) os.mkdir(path) + # Recursive call of itself create_linear_directories(path, target_depth, current_depth + 1, name) -def create_parallel_directories(input_path, target_depth, width, name): - """Creates directories after the pattern x*y""" +def create_parallel_directories(input_path: str, target_depth: int, width: int, name): + """Creates the branches which house the levels. - # TODO: - add dynamic name input - # - add docstring - logger.debug( - f"FUNC: create_parallel_directories(entered) VALUES: path='{input_path}', target_depth='{target_depth}', width='{width}', name={name}" - ) + As input it takes the input_path and the width from which it creates + the branches of the structure. Afterwards it passes the target_depth + to another function to create the levels of each branch. + If 'None' is passed to the '--name' argument, the default name 'branch' + gets used as base directory name. + + Args: + input_path ( str ): _The current working directory. + target_depth ( int ): _The depth on how deepo directories are created._ + width ( int ): _The ammount of branches to create._ + name ( list[str] | None ): _The name of the level directories._ + + """ + + # logger.debug( + # f"FUNC: create_parallel_directories(entered) VALUES: path='{input_path}', target_depth='{target_depth}', width='{width}', name={name}" + # ) + + # TODO: Find a way on how to specify the type in the function call + # and let the if statement pass. + + # Get base directory name if name is None: base_name = "branch" else: base_name = name[0] for i in range(width): + # Create directory name directory_name = ( base_name + "_" + get_standard_name_number(i, get_int_length(width)) ) + + # Create the path where to create directory path = os.path.join(input_path, directory_name) os.mkdir(path) + # Recursive call of itself create_linear_directories( input_path=path, target_depth=target_depth, diff --git a/refit/src/refit.py b/refit/src/refit.py index 21bba89..8c66246 100644 --- a/refit/src/refit.py +++ b/refit/src/refit.py @@ -43,11 +43,10 @@ REFIT_VERSION = f"Refit Beta {read_version_config()}" # 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", + 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, + formatter_class=argparse.RawDescriptionHelpFormatter, ) # Main Parser Arguments @@ -55,30 +54,51 @@ parser = argparse.ArgumentParser( # 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 = subparser.add_parser( + name="create", + description="The create sub command lets you create files, folders and directory structures.", + help="The create sub command lets you create files, folders and directory structures.", +) +create_parser.add_argument( + "-n", + metavar="COUNT", + type=int, + help="Number of items", +) +create_parser.add_argument( + "-i", + "--input", + metavar="PATH", + help="Input path. If not specified the current directory is used.", +) create_parser.add_argument( "--name", nargs="*", help="the name of the folder you want to create\n Default: directory", ) create_parser.add_argument( - "--filemode", action="store_true", help="creates files instead of directories" + "--filemode", + action="store_true", + help="creates files instead of directories", ) create_parser.add_argument( "-r", "--recursive", + metavar="INT", type=int, nargs=2, - help="Sets the recursive mode for folders to true. First argumet is for the depth and the second for the width.", + help="""Sets the recursive mode for folders to true. First argumet + is for the depth and the second for the width.""", +) +create_parser.add_argument( + "-e", + type=str, + help="File extension which gets appended to the end of the file name.", ) -create_parser.add_argument("-e", help="File extension") create_parser.set_defaults(command_class=Refit_Create) args = parser.parse_args()