#!/usr/bin/env python

import argparse
import code
import sys
import logging
from pprint import pprint

from grouper.settings import settings
from grouper.util import get_loglevel
from grouper.graph import GroupGraph
from grouper import models


if __name__ == "__main__":

    sa_log = logging.getLogger("sqlalchemy.engine.base.Engine")

    parser = argparse.ArgumentParser(
        description="Create schema on configured database."
    )

    parser.add_argument("-c", "--config", default=None, help="Path to config file.")
    parser.add_argument("-v", "--verbose", action="count", default=0,
                        help="Increase logging verbosity.")
    parser.add_argument("-q", "--quiet", action="count", default=0,
                        help="Decrease logging verbosity.")

    args = parser.parse_args()

    log_level = get_loglevel(args)
    logging.basicConfig(
        level=log_level,
        format=settings["log_format"],
    )

    if log_level < 0:
        sa_log.setLevel(logging.INFO)

    if not args.config:
        print "--config is required."
        sys.exit(1)

    settings.update_from_config(args.config)

    db_engine = models.get_db_engine(settings["database"])
    models.Session.configure(bind=db_engine)
    session = models.Session()

    code.interact(local={
        "session": session,
        "graph": GroupGraph.from_db(session),
        "m": models,
        "pp": pprint,
    })
