from __future__ import print_function
from vivo2notld.definitions import definitions, list_definitions
from vivo2notld.utility import execute, execute_list
import argparse
import codecs


if __name__ == "__main__":

    parser = argparse.ArgumentParser()
    all_definitions = []
    all_definitions.extend(definitions.keys())
    all_definitions.extend(list_definitions.keys())
    parser.add_argument("definition", choices=all_definitions)
    parser.add_argument("subject_namespace", help="For example, http://vivo.gwu.edu/individual/")
    parser.add_argument("subject_identifier", help="For example, n115")
    parser.add_argument("endpoint",
                        help="Endpoint for SPARQL Query of VIVO instance,e.g., http://localhost/vivo/api/sparqlQuery.")
    parser.add_argument("username", help="Username for VIVO root.")
    parser.add_argument("password", help="Password for VIVO root.")
    parser.add_argument("--format", choices=["json", "yaml", "xml", "nt", "pretty-xml", "trix"],
                        help="The format for serializing. Default is json.", default="json")
    parser.add_argument("--indent", default="4", type=int, help="Number of spaces to use for indents.")
    parser.add_argument("--file", help="Filepath to which to serialize.")
    parser.add_argument("--debug", action="store_true", help="Also output the query, result graph, and python object.")
    parser.add_argument("--offset", type=int, help="Offset for lists.")
    parser.add_argument("--limit", type=int, help="Limit for lists.")

    #Parse
    args = parser.parse_args()
        "--namespace",
        default="http://vivo.mydomain.edu/individual/",
        help="Namespace for the subject. Default is http://vivo.mydomain.edu/individual/.",
    )
    parser.add_argument("--identifier", help="Identifier for the subject, e.g., n123.")
    parser.add_argument(
        "--list-namespace",
        default="http://vivo.mydomain.edu/individual/",
        help="Namespace for the list subject. Default is http://vivo.mydomain.edu/individual/.",
    )
    parser.add_argument("--list-identifier", help="Identifier for the list subject, e.g., n123.")
    parser.add_argument("--definition", default="person", choices=definitions.keys(), help="Default is person.")
    parser.add_argument(
        "--list-definition",
        default="person_summary_with_positions_in",
        choices=list_definitions.keys(),
        help="Default is person_summary_with_positions_in.",
    )
    parser.add_argument("--limit", type=int, help="List limit.")
    parser.add_argument("--offset", type=int, help="List offset.")

    # Parse
    args = parser.parse_args()

    app.debug = args.debug
    app.secret_key = "vivo2notld"

    default_definition = args.definition
    default_list_definition = args.list_definition
    default_subject_namespace = args.namespace
    default_subject_identifier = args.identifier