import astropy.io.fits as pyfits
import pyds9
import time
import glob
import argparse

def create_parser():
    parser = argparse.ArgumentParser(description='Connect to an open ds9 window to display incoming stream of images from a CBP scan')
    parser.add_argument('direc', nargs=1, help='Directory to watch')
    return parser


def show(f, ds9):
    print(f)
    fid = pyfits.open(f)
    ds9.set_pyfits(fid)
    fid.close()

def main(direc):
    ds9 = pyds9.DS9()
    flist = glob.glob(direc + '*.fits')

    if len(flist) == 0:
        last_file = ''
    else:
        last_file = sorted(flist)[-1]
    
    while True:
        new_list = sorted(glob.glob(direc + '*.fits'))
        if len(new_list) == 0:
            time.sleep(5)
            continue
        
        if new_list[-1] == last_file:
            time.sleep(5)
            continue
        else:
            print('Displaying: {}'.format(new_list[-1]))
            last_file = new_list[-1]
            show(last_file, ds9)

if __name__ == '__main__':
    parser = create_parser()
    args = parser.parse_args()
    main(args.direc[0])
        
