#! /usr/bin/env python
# -*- coding: utf-8 -*-
from Bio import SeqIO
import glob
import argparse
import time
import os
import sys
from argparse import RawTextHelpFormatter


def bin_output(path, file_name, outfile, length):
    contig_names_bin = []
    for record in SeqIO.parse(os.path.join(path, file_name), "fasta"):
        if int(len(record.seq)) >= int(length):
            contig_names_bin.append(record.id)
    file_ = open(str(outfile), 'w')
    for id_name in contig_names_bin:
        file_.write("%s\n" % id_name)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(prog='get-ids', usage='%(prog)s -f directory/with/fasta -l fasta/file/ -o outputName -x contig/length', description="""
    *****************************************************************************
    *********************************BinSanity***********************************
    **    The `get-ids` script is built to generate a file containing contig   **
    **    names of all contigs greater than size the size indicated by `-x`    **
    **    for input into Binsanity-profile.                                    **
    *****************************************************************************""", formatter_class=RawTextHelpFormatter)
    parser.add_argument("-f", dest="inputPutative", metavar="",
                        help="Specify the directory containing fasta file")
    parser.add_argument("-o", dest="inputOUTPUT", metavar="",
                        help="Specify the output file")
    parser.add_argument("-l", dest="inputFasta",
                        metavar="", help="Specify fasta file")
    parser.add_argument("-x", dest="inputLength", metavar="", type=int,
                        help="Specify minimum length to be incorporated", default=2000)
    args = parser.parse_args()
    if len(sys.argv) < 2:
        print(parser.print_help())
    elif args.inputPutative is None:
        print("Identify directory where fasta file is using -f")
    elif args.inputFasta is None:
        print("Identify fasta file is using -l")
    elif args.inputOUTPUT is None:
        print("Use -o to specify and output file")
    elif len(sys.argv) is None:
        print(parser.print_help())

    else:
        bin_output(args.inputPutative, args.inputFasta,
                   args.inputOUTPUT, args.inputLength)
