Exemplo n.º 1
0
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
Exemplo n.º 2
0
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()