import argparse import os from pathlib import Path from .refit_logger import logger from . import librefit # logger.debug("Initiated refit_create.py") # ---------------------------------------------------------------------- class Refit_Create: """A class to create folders and files. It first calls the decider which lets the create_input_valid() function check if the input argument exists. If create_input_valid() returns 'True' it continues to execute the command as per the given arguments. default folder name: directory""" def __init__(self, args): """Initiating variables for creation""" self.args = args self.name = args.name self.input = args.input self.n = args.n self.filemode = args.filemode def create_input_valid(self): """Checks if the input is valid and returns either True or throws an error in log and terminal.""" logger.debug(f"Start create_input_valid() value= {self.input}") if self.input is None: input = "." self.input = input logger.info( f"FUNC: create_input_valid MSG: Usingsing current directory as input. value={self.input} " ) return self.input else: logger.debug( f"Exiting create_input_valid() with valid input. value= {self.input}" ) return True def create_n_folders(self, n, input, name): """Creates an set ammount of folders. Using the default directory name if no other is provided.""" logger.debug(f"FUNC: create_n_folders() ARGS: n={n} input={input} name={name}") # Creating the length of the suffix number_string. length_n = len(str(n)) logger.debug( f"FUNC: create_n_folders() MSG: Length of numbering string added to the name:{length_n}" ) # Get either the default folder name or the input name as string. logger.debug( f"FUNC: create_n_folders() MSG: Type of name value: {type(name)} name={name}" ) folder_name = librefit.get_standard_folder_name(name) logger.debug( f"FUNC: create_n_folders() MSG: Folder name: {folder_name} post get_standard_folder_name() call" ) while n > 0: # iterating down for the files number. folder_number = str(n - 1) # Passing the number and the length of the string to get the string back. number_string = librefit.get_standard_name_number(folder_number, length_n) # Creating path for the folder temp_name = f"{folder_name}_{number_string}" folder_creation_path = os.path.join(input, temp_name) # Creating folder and subtracting n by one for the number_string os.mkdir(folder_creation_path) n -= 1 def create_n_files(self, n, input, name): """Creates an set ammount of files, using the default file name if none is provided.""" logger.debug( f"FUNC: create_n_files() MSG: Entered function VALUES: n={self.n} name={self.name} input={self.input}" ) # Get name of the file file_name = librefit.get_standard_file_name(name) length_n = len(str(n)) logger.debug( f"FUNC: create_n_files() MSG: file name='{file_name}' length_n={length_n}" ) while n > 0: # Get number of the file(s) to create file_number = str(n - 1) number_string = librefit.get_standard_name_number(file_number, length_n) temp_name = f"{file_name}_{number_string}" file_path = Path(os.path.join(input, temp_name)) file_path.touch(exist_ok=True) logger.debug( f"FUNC: create_n_files MSG: created file at {os.path.join(input, temp_name)}" ) n -= 1 def rf_create_decider(self): """Coordination of the 'create' sub command""" logger.debug("FUNC: rf_create_decider() MSG: Entered decider function") if self.create_input_valid(): logger.debug(f"Valid input. value={self.input}") if self.filemode: logger.debug("DECISION if filemode") self.create_n_files(self.n, self.input, self.name) else: logger.debug( f"DIR-MODE | ARGS: n={self.n} input={self.input} name={self.name}" ) self.create_n_folders(self.n, self.input, self.name) def __call__(self): """Gets called when the object is treated as an function""" self.rf_create_decider()