#!/usr/bin/env python3

import os
import os.path
import shutil
import subprocess
import sys

#Version  4/23/98
#Synopsis: consensus.csh infile program width strand printbest outfile

""" ensure that there are enough command line arguments to parse """
if len(sys.argv) < 7:
    print("Usage: consensus.py  INFILE  PROGRAM  WIDTH  STRAND  PRINTBEST  OUTFILE")
    exit();

#Convert arguments to variables
INFILE       = sys.argv[1]
PROGRAM      = sys.argv[2]
WIDTH        = sys.argv[3]
STRAND       = sys.argv[4]
PRINTBEST    = sys.argv[5]
OUTFILE      = sys.argv[6]

PWD = os.getcwd()

# Make a temporary directory to run the program in 
TEMPDIR = 'CONSENSUS.' + os.getpid()
os.mkdir(TEMPDIR)
shutil.copyfile(INFILE, TEMPDIR)
shutil.copyfile(INFILE + '.alphabet', TEMPDIR)
os.chdir(TEMPDIR)

infile = open(INFILE, 'r')
outfile = open(OUTFILE, 'w')

#-------- run consensus  -----------
if PROGRAM == "consensus":
    subprocess.call(['consensus', '-a', INFILE + '.alphabet', STRAND, '-L' + WIDTH, '-pf', PRINTBEST], stdin=infile, stdout=outfile)
elif PROGRAM == "wconsensus":
    if STRAND == "-c3":
        STRAND = ""
    subprocess.call(['consensus', '-a', INFILE + '.alphabet', STRAND, '-pf', PRINTBEST], stdin=infile, stdout=outfile)

infile.close()
outfile.close()

#----------- Return results to calling directory----------------
shutil.copyfile(OUTFILE, os.path.join(PWD, OUTFILE))
os.chdir(PWD)
shutil.rmtree(TEMPDIR)
