#!/usr/bin/env python

import sys

from argparse import ArgumentParser

from m4db_database.export_json_utilities import export_software


def get_command_line_parser():
    r"""
    Retrieve a command line parser object for this script.

    Returns:
        A command line parser object for this script.

    """
    parser = ArgumentParser()

    parser.add_argument("dir_path",
                        help="output directory, will produce a file called 'software.json'")
    parser.add_argument("-l", "--list", action="append",
                        help="a list of software name, versions (delimited by colon), i.e 'merrill:1.3.5")
    parser.add_argument("-f", "--formatted", action="store_true",
                        help="flag to indicate whether the output should be formatted")
    return parser


def main():
    parser = get_command_line_parser()
    args = parser.parse_args()

    print("Exporting database softwares to '{}'...".format(args.dir_path))
    if args.list is not None:
        name_version_list = []
        for item in args.list:
            name_version = item.split(':')
            if len(name_version) != 2:
                print("The name/version input '{}' is not correct format.".format(item))
                sys.exit(1)
            name = name_version[0].strip()
            version = name_version[1].strip()
            name_version_list.append((name, version))
        export_software(args.dir_path, name_version_list, args.formatted)
    else:
        export_software(args.dir_path, args.list, args.formatted)
    print("done!")


if __name__ == "__main__":
    main()
