#!python
import sys
import os
import argparse
import GEOparse

def parse(args):

    description = """
    gsm2fastq v0.1
    """

    p = argparse.ArgumentParser(
	    description=description
	    )

    p.add_argument("term",
            help="GEO accession",
            metavar="GSM"
            )
    p.add_argument("email",
            help="e-mail address for Entrez API",
            metavar="EMAIL"
            )
    p.add_argument("-o", "--outdir",
            dest="outdir",
            help="output directory",
            metavar="DIR",
            default="./"
            )
    p.add_argument("-f", "--filetype",
            dest="filetype",
            help="filetype (fastq or sra)",
            metavar="TYPE",
            default="fastq"
            )


    return p.parse_args(args)

if __name__ == "__main__":
    args = parse(sys.argv[1:])
    if not args.term.startswith("GSM"):
        raise NotImplementedError("only GSM ids work for now!")
    gsm = GEOparse.get_GEO(args.term)
    title = gsm.metadata.get("title", [])[0]
    gsm.download_SRA(
            args.email, 
            directory=args.outdir,
            filetype=args.filetype,
            aspera=os.environ.has_key("ASPERA_HOME"),
            )
    print "Supp_{}_{}".format(gsm.name, title)
