#!/usr/bin/env python3
import sys
import os.path as osp
from pycbio.sys import fileOps
from zooCommon import loadZooEquiv, getZooGenArkAcc, GenomeMissingError


###
# these were for change to link to genark
###
def editGenomeLine(zooToGenArk, line):
    key, genome = line.split()
    return "genome " + getZooGenArkAcc(zooToGenArk, genome)

def processLineToGenArk(zooToGenArk, line):
    if line.startswith("genome "):
        return editGenomeLine(zooToGenArk, line)
    elif line.startswith("twoBitPath"):
        return "# " + line
    else:
        return line

def doLinkToGenark(zooToGenArk, inGenomes, outFh):
    errCnt = 0
    for line in fileOps.iterLines(inGenomes):
        try:
            line = processLineToGenArk(zooToGenArk, line)
            print(line, file=outFh)
        except GenomeMissingError as ex:
            print("Failed: ", ex, file=sys.stderr)
            errCnt += 1
    if errCnt > 0:
        exit("failed genomes")

def editGenomesLinkToGenark():
    zooToGenArk = loadZooEquiv()
    with open("new.genomes.txt", 'w') as outFh:
        doLinkToGenark(zooToGenArk, "genomes.txt", outFh)

###
# these are for adding chromAlias lines
###
def maybeAddChromAlias(line, outFh):
    key, genome = line.split()
    chromAliasBb = osp.join(genome, genome + ".chromAlias.bb")
    if osp.exists(chromAliasBb):
        print("chromAliasBb", chromAliasBb, file=outFh)
    else:
        print("no chromAliasBb for ", genome, file=sys.stderr)


def processLineAddAlias(line, outFh):
    print(line, file=outFh)
    if line.startswith("genome "):
        maybeAddChromAlias(line, outFh)

def doEditGenomesChromAlias(inGenomes, outFh):
    for line in fileOps.iterLines(inGenomes):
        processLineAddAlias(line, outFh)

def editGenomesChromAlias():
    with open("new.genomes.txt", 'w') as outFh:
        doEditGenomesChromAlias("genomes.txt", outFh)


def main():
    editGenomesChromAlias()
main()
