#!/usr/bin/env python

# core
import argparse
import logging
import os
import sys

# pypi
#import logstash

# local
from cathpy import util

host='localhost'

# event_logger = logging.getLogger('python-logstash-logger')
# event_logger.setLevel(logging.INFO)
# event_logger.addHandler(logstash.LogstashHandler(host, 9876, version=1))

# cath-sc-merge-alignment \
#    --cv=4.2 \
#    --in=tests/data/sc.cora.fa \
#    --out_sto=tmp.sto \
#    --ff_dir=tests/data/funfams

parser = argparse.ArgumentParser(
    description="Merge FunFams using a structure-based alignment")

parser.add_argument('--cv', type=str, dest='cath_version', required=True,
    help='cath version')
parser.add_argument('--in', type=str, dest='sc_file', required=True,
    help='input reference structure-based alignment (FASTA)')
parser.add_argument('--out', type=str, dest='out_sto', required=True,
    help='output merged alignment file (STOCKHOLM)')
parser.add_argument('--ff_dir', type=str, required=False,
    help='directory in which funfam alignments can be found (default: <sc_dir>)')
parser.add_argument('--ff_tmpl', type=str, 
    required=False, default='__SFAM__-ff-__FF_NUM__.reduced.sto',
    help='template used to help locate funfam file (default: %(default)s)')

parser.add_argument('--verbose', '-v', required=False, action='count', default=0,
    help='more verbose logging')

if __name__ == '__main__':
    args = parser.parse_args()

    log_level = logging.DEBUG if args.verbose > 0 else logging.INFO
    logging.basicConfig(level=log_level)

    if not args.ff_dir:
        args.ff_dir = os.path.dirname(args.sc_file) 

    merge_args = dict([(key, vars(args)[key]) for key in (
        'cath_version', 'sc_file', 'out_sto', 'ff_dir', 'ff_tmpl')])

    merger = util.StructuralClusterMerger(**merge_args)
    merged_aln = merger.run()

    logging.info('DONE')
