#!/usr/bin/python3

import argparse
import sys

import run

from erimp import Erimp
from train import Train

desc = 'train models'
parser = argparse.ArgumentParser(description=desc)
parser.add_argument('-v', action='store_true', help='raise verbosity')
parser.add_argument('-n', action='store_true', help='dry run')
parser.add_argument('-m', type=int, help='max models made')
parser.add_argument('bapis', metavar='bnp', type=str, nargs='*',
                    help='bits and pieces arguments')
args = parser.parse_args()
e = Erimp(args.bapis, do_verbose=args.v)

run.check(do_print=None)
if run.has_something_with('release', do_print=None):
    print("I see a release in progress")
    sys.exit()

max_models = 1
if args.m is not None:
    max_models = args.m

train = Train(erimp=e, do_verbose=args.v)

repcodes = e.o.by_train_size()
count_models = 0
for repcode in repcodes:
    if run.has_something_with(repcode, do_print=None):
        continue
    if not train.donere(repcode, no_feature_train=True):
        print("run_train: no need to train " + repcode)
        continue
    # train.run(repcode)
    train.build_file(repcode)
    count_models += 1
    if count_models >= max_models:
        sys.exit()

for repcode in repcodes:
    if run.has_something_with(repcode, do_print=None):
        continue
    if not train.donere(repcode, no_feature_train=False):
        print("run_train: no need to sigsi train " + repcode)
        continue
    train.build_file(repcode)
    # train.run(repcode)
    count_models += 1
    if count_models >= max_models:
        sys.exit()
