def deploy(files_list: typing.List[tuple]):
    """
    Iterates through the specified files_list and copies or writes each entry
    depending on whether its a file copy entry or a file write entry.

    :param files_list:
        A list of file write entries and file copy entries
    """
    def deploy_entry(entry):
        if not entry:
            return

        if hasattr(entry, 'source') and hasattr(entry, 'destination'):
            return copy(entry)

        if hasattr(entry, 'path') and hasattr(entry, 'contents'):
            return write(entry)

        raise ValueError('Unrecognized deployment entry {}'.format(entry))

    return [deploy_entry(f) for f in files_list]
Iterates through the specified files_list and copies or writes each entry
    depending on whether its a file copy entry or a file write entry.

    :param files_list:
        A list of file write entries and file copy entries