#!/home/jimmy/repos/SPT/venv/bin/python
import argparse
import os
from os.path import join

import pandas as pd

import spatialprofilingtoolbox
from spatialprofilingtoolbox.environment.file_io import get_input_filenames_by_data_type
from spatialprofilingtoolbox.environment.file_io import get_input_filename_by_identifier
from spatialprofilingtoolbox.dataset_designs.multiplexed_imaging.halo_cell_metadata_design import HALOCellMetadataDesign

if __name__=='__main__':
    parser = argparse.ArgumentParser(
        description = '''
        Scan file manifest for a file by identifier or data type. At least one of
        --data-type or --file-identifier must be supplied.
        '''
    )
    group = parser.add_mutually_exclusive_group(required=True)
    group.add_argument(
        '--data-type',
        dest='data_type',
        type=str,
        required=False,
        help='The data type descriptor to search by.',
    )
    group.add_argument(
        '--file-identifier',
        dest='file_identifier',
        type=str,
        required=False,
        help='The file identifier to search by.',
    )
    parser.add_argument(
        '--input-path',
        dest='input_path',
        type=str,
        required=True,
    )
    parser.add_argument(
        '--file-manifest-file',
        dest='file_manifest_file',
        type=str,
        required=True,
    )
    parser.add_argument(
        '--retrieved-filename-file',
        dest='retrieved_filename_file',
        type=str,
        required=True,
        help='Filename for output, filename retrieved.',
    )
    args = parser.parse_args()

    if args.data_type:
        retrieved_filename = get_input_filenames_by_data_type(
            data_type=args.data_type,
            file_manifest_filename=args.file_manifest_file,
        )[0]

    if args.file_identifier:
        retrieved_filename = get_input_filename_by_identifier(
            input_file_identifier=args.file_identifier,
            file_manifest_filename=args.file_manifest_file,
        )

    if retrieved_filename is None:
        retrieved_filename = ''
        status = '0'
    else:
        retrieved_filename = join(args.input_path, retrieved_filename)
        status = '1'

    with open(args.retrieved_filename_file, 'wt') as file:
        file.write(retrieved_filename)

    print(status, end='')
