#!/usr/bin/python3

import sys
from typing import List

from viavi.waldogen import waldo_gen


def is_valid_argv(argv: List[str]) -> bool:
    """TODO

    :param argv:
    :return:
    """
    return all([
        len(argv) > 3,
        any(("--out-file" in argv, "-o" in argv)),
        any(("--in-files" in argv, "-i" in argv))
    ])


def get_out_file(argv: List[str]) -> str:
    """TODO

    :param argv:
    :return:
    """
    args = {"-o", "--out-file"}

    intersect = args.intersection(set(argv))

    pos = argv.index(intersect.pop())

    return argv[pos + 1]


def get_in_files(argv: List[str]) -> List[str]:
    """TODO

    :param argv:
    :return:
    """
    args = {"-i", "--in-files"}

    intersect = args.intersection(set(argv))

    pos = argv.index(intersect.pop())

    return argv[pos + 1:]


if __name__ == "__main__":
    if not is_valid_argv(sys.argv):
        print("Usage:\n\t%s <--out-file|-o> [<out_file>] <--in-files|-i> [<in_files>]" % sys.argv[0])
        exit(2)

    out_file = get_out_file(sys.argv)
    in_files = get_in_files(sys.argv)
    waldo_gen(out_file, in_files)

