#!/usr/bin/env python3

import argparse
from sat import util


def main(args):
    if args.fiel_validar:
        util.fiel_validar(args)
        return

    if args.solicitar_descarga:
        util.solicitar_descarga(args)
        return

    if args.verificar_descarga:
        util.verificar_descarga(args)
        return

    if args.descargar_archivos:
        util.descargar_archivos(args)
        return

    util.descargar(args)

    return


def _process_command_line_arguments():
    now = util.today()
    year = now.year

    parser = argparse.ArgumentParser(description='CFDI Descarga SAT')

    help = 'Valida la FIEL'
    parser.add_argument('-fv', '--fiel-validar', help=help,
        action='store_true', default=False, required=False)
    help = 'Ruta al directorio con la FIEL'
    parser.add_argument('-fd', '--fiel-dir', help=help, default='')
    help = "Nombre de los archivos FIEL, el predeterminado es 'fiel'"
    parser.add_argument('-fn', '--fiel-nombre', help=help, default='fiel')

    help = "Descargar por Tipo: t=todos(default), e=emitidas, r=recibidas"
    parser.add_argument('-t', '--tipo', help=help,
        dest='type', default='t', choices=['t', 'e', 'r'])
    help = "Año de la descarga entre 2014 y el año actual (predeterminado)."
    parser.add_argument('-a', '--año', help=help,
        dest='year', default=year, type=int, choices=range(2014, year+1))
    help = "Mes de la descarga, el mes actual es el predeterminado"
    parser.add_argument('-m', '--mes', help=help,
        dest='month', default=0, type=int, choices=range(13))
    help = "Día de la descarga, de forma predeterminada no se usa"
    parser.add_argument('-d', '--dia', help=help,
        dest='day', default=0, type=int, choices=range(31))
    help = "Intervalo de días a partir de la fecha actual y hacia a atras"
    parser.add_argument('-ud', '--ultimos-dias', help=help,
        dest='last_days', default=0, type=int, choices=range(30))
    help = "Fecha inicial AAAA-MM-DD"
    parser.add_argument('-fi', '--fecha-inicial', help=help,
        dest='date_start', default='')
    help = "Fecha final AAAA-MM-DD"
    parser.add_argument('-ff', '--fecha-final', help=help,
        dest='date_end', default='')

    help = 'Solicitar descarga'
    parser.add_argument('-sd', '--solicitar-descarga', help=help,
        action='store_true', default=False, required=False)
    help = 'Verificar estatus de descarga'
    parser.add_argument('-vd', '--verificar-descarga', help=help,
        action='store_true', default=False, required=False)
    help = 'Descargar archivos'
    parser.add_argument('-da', '--descargar-archivos', help=help,
        action='store_true', default=False, required=False)
    help = 'ID de solicitud'
    parser.add_argument('-id', '--id-solicitud', dest='id_request',
        help=help, default='')
    help = 'ID archivo'
    parser.add_argument('-ida', '--id-archivo', dest='id_file',
        help=help, default='')
    help = 'Ruta de descarga de archivos'
    parser.add_argument('-dd', '--directorio-descargas', dest='path_download',
        help=help, default='')

    help = 'Descargar solo metadatos'
    parser.add_argument('-md', '--metadata', help=help,
        action='store_true', default=False, required=False)

    args = parser.parse_args()
    return args


if __name__ == '__main__':
    args = _process_command_line_arguments()
    main(args)
