#!/usr/bin/env python2
import pkg_resources
import immunedb.common.config as config
import immunedb.exporting.cli as cli


if __name__ == '__main__':
    main_parser = config.get_base_arg_parser('Exports ImmuneDB data in '
                                             'various formats',
                                             multiproc=False)
    subparsers = main_parser.add_subparsers(dest='fmt', help='The format')
    parser = subparsers.add_parser('vdjtools')
    parser.add_argument('--min-clone-size', type=int, default=1,
                        help='Only export clones with at least this many'
                        ' copies.')
    parser.add_argument('--include-uniques', action='store_true',
                        help='Includes how many unique sequences are in'
                        ' clones.')

    parser = subparsers.add_parser('genbank')
    parser.add_argument('--inference', default='ImmuneDB:{}'.format(
                        pkg_resources.get_distribution('immunedb').version),
                        help='Inference tool used for gene assignment')
    parser.add_argument('--gene-db', default='IMGT/GENE-DB',
                        help='Reference V/J gene database')
    parser.add_argument('--species', default='Homo sapiens',
                        help='Species of sequences')
    parser.add_argument('--mol-type', default='DNA', help='Molecule type')

    parser = subparsers.add_parser('changeo')
    parser.add_argument('--clones-only', action='store_true', default=False,
                        help='Includes only sequences assigned to a clone')
    parser.add_argument('--min-subject-copies', default=None,
                        help='''The minimum copies in the subject required to
                        be exported.  Set to 1 for all subject-unique
                        sequences, or higher for more stringent filtering''')

    args = main_parser.parse_args()
    session = config.init_db(args.db_config)

    fmts = {
        'vdjtools': cli.export_vdjtools,
        'genbank': cli.export_genbank,
        'changeo': cli.export_changeo,
    }

    fmts[args.fmt](session, args)
