#!/usr/bin/env python2.7
import os
import sys
import logging
import pgv.config
import pgv.utils.options
import pgv.utils.misc
import pgv.utils.app
from pgv.utils.exceptions import PGVError


def main():
    options = pgv.utils.options.parse()
    config = pgv.config.parse(pgv.utils.misc.search_config(options.config))
    pgv.utils.misc.setup_logging(config.logging)
    logger = logging.getLogger(__name__)
    logger.debug("begin")
    logger.debug("arguments: %s", " ".join(sys.argv))
    try:
        pgv.utils.app.Application(config, options).run(options.command)
    except PGVError, e:
        logger.error(e.message)
        logger.debug("finish unsuccessfully\n\n")
        os._exit(e.code)
    except Exception, e:
        logger.exception(e)
        logger.debug("finish unsuccessfully\n\n")
        os._exit(1)
    logger.debug("finish successfully\n\n")


if __name__ == '__main__':
    main()
