def remove_aliases (output_dirpath: str, tag_remove_dict: dict, log: Log = None): """ Delete file aliases :param output_dirpath: alias files' parent dirpath :param tag_add_dict: tags to add for :param log: log :return: none """ for tag in tag_remove_dict: # Generate tag dirpath tag_dirpath_rel = generate_tag_dirpath (tag) tag_dirpath = os.path.join (output_dirpath, tag_dirpath_rel) # Run through files for file in tag_remove_dict [tag]: # Generate alias path alias_dirpath_rel, alias_name = generate_alias_relpath (file) alias_path = os.path.join (tag_dirpath, alias_dirpath_rel, alias_name) # Remove alias try: os.remove (alias_path) except FileNotFoundError: log.add_line (f'{LOGMSG_MISSING_DELETE} {alias_path}') # write to log
def process_dir (dirpath: str, output_dirpath: str, ignore_beacons: bool = False): """ Generate aliases for the children of a dirpath :param dirpath: dirpath to process :param output_dirpath: output dirpath :param ignore_beacons: ignore beacons marking already generated aliases :return: None """ # Instantiate log log = Log (dirpath=output_dirpath) # Parse directory file_dict = read_dir (dirpath) # Index files according to tags tag_add_dict, tag_remove_dict = index_files (file_dict, ignore_beacons=ignore_beacons) log.add_line (f'Adding {dictlen(tag_add_dict)} aliases.') log.add_line (f'Removing {dictlen(tag_remove_dict)} aliases.') # Add aliases add_aliases (output_dirpath, tag_add_dict, log) # Remove aliases remove_aliases (output_dirpath, tag_remove_dict, log) # Clean aliases' directory clean_dir (output_dirpath) # Save log log.save()