#!python

from astropy.time import Time
from astropy import units as u
from romanisim import catalog
from astropy.coordinates import SkyCoord
try:
    from astroquery.gaia import Gaia
except ModuleNotFoundError:
    raise ModuleNotFoundError('This script requires astroquery, which is '
                              'not otherwise a romanisim requirement.')


if __name__ == '__main__':
    import argparse
    parser = argparse.ArgumentParser(
        description='Generate a romanisim input catalog from Gaia.',
        epilog='EXAMPLE: %(prog)s 270.0 66.0 2026-01-01T00:00:00 gaia.ecsv',
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument('ra', type=float, help='right ascension (degree)')
    parser.add_argument('dec', type=float, help='declination (degree)')
    parser.add_argument('time', type=str, help='time (ISO 8601)')
    parser.add_argument('filename', type=str, help='output catalog')
    parser.add_argument('--radius', type=float,
                        help='find sources within this radius of query')

    args = parser.parse_args()

    ra, dec, radius = args.ra, args.dec, args.radius
    time = Time(args.time, format='isot')
    cen = SkyCoord(ra * u.deg, dec * u.deg)
    cat = catalog.make_gaia_stars(cen, radius=radius, date=time)
    cat.write(args.filename, overwrite=True)
