#!/usr/bin/env python3
import argparse
import seroba


parser = argparse.ArgumentParser(
    prog='seroba',
    usage='seroba <command> <options>',
    description='',
)
subparsers = parser.add_subparsers(title='Available commands', help='', metavar='')

#----------------------------PneumoCaT db----------------------------#

subparser_getPneumocat = subparsers.add_parser(
    'getPneumocat',
    help='downloads genetic information from PneumoCat',
    usage='seroba getPneumocat  <database dir>',
    description='Downlaods PneumoCat and build an tsv formated meta data file out of it',
)
subparser_getPneumocat.add_argument('database_dir', type=str, \
    help='output directory for PneumoCat Database')
subparser_getPneumocat.set_defaults(func=seroba.tasks.getPneumocat.run)

#----------------------------Create Databses----------------------------#
#kmer db, ariba db
subparser_createDBs = subparsers.add_parser(
    'createDBs',
    help='creates Databases for kmc and ariba',
    usage='seroba createDBs  <database dir> <kmer size>',
    description='Creates a Database for kmc and ariba',
)
subparser_createDBs.add_argument('out_dir', type=str, \
    help='output directory for kmc and ariba  Database')
subparser_createDBs.add_argument('kmer_size', type=str, \
    help='kmer_size zou want to use for kmc , recommanded = 71')
subparser_createDBs.set_defaults(func=seroba.tasks.createDBs.run)

#-------------------------------serotyping--------------------------------#

subparser_runSerotyping = subparsers.add_parser(
    'runSerotyping',
    help='indetify serotype of your input data',
    usage='seroba runSerotyping [options]  <databases directory> <read1> <read2> <prefix>',
    description='identify serotype of your input data',
)
subparser_runSerotyping.add_argument('databases', type=str, \
    help='path to database directory')
subparser_runSerotyping.add_argument('read1', type=str, \
    help='forward read file')
subparser_runSerotyping.add_argument('read2', type=str, \
    help='backward read file')
subparser_runSerotyping.add_argument('prefix', type=str, \
    help='unique prefix')

other_run_group = subparser_runSerotyping.add_argument_group('Other options')
other_run_group.add_argument('--noclean', action='store_true',\
    help='Do not clean up intermediate files (assemblies, ariba report)')
other_run_group.add_argument('--coverage', type=int,\
    help='threshold for k-mer coverage of the reference sequence , default = 20 ')
subparser_runSerotyping.set_defaults(func=seroba.tasks.sero_run.run)

#-------------------------------serotyping--------------------------------#
subparser_summaries = subparsers.add_parser(
    'summary',
    help='output folder has to contain all folders with prediction results',
    usage='seroba summary  <output folder>',
    description='writes all predictions in one tsv file'
)
subparser_summaries.add_argument('out_dir', type=str, \
    help='path to output folder with results from runSerotyping')
subparser_summaries.set_defaults(func=seroba.tasks.summ.run)
#-------------------------------version--------------------------------#

subparser_version = subparsers.add_parser(
    'version',
    help='Get versions and exit',
    usage='seroba version',
    description='This reports the version of SEROBA, and also looks for all the dependencies (including python modules) and reports all their versions. Tells you if all looks OK or not'
)
subparser_version.set_defaults(func=seroba.tasks.version.run)

args = parser.parse_args()

if hasattr(args, 'func'):
    args.func(args)
else:
    parser.print_help()
