#!/usr/bin/python2 -tt
# -*- coding: utf-8 -*-


import sys
import traceback
from preupg.cli import CLI
from preupg.application import Application
from preupg.conf import Conf
from preupg import settings
from preupg.logger import logger_debug


def main():
    cli = CLI()
    conf = Conf(cli.opts, settings, cli)
    app = Application(conf)
    try:
        return_code = app.run()
        logger_debug.debug("preupg returned '%s'" % return_code)
        return return_code
    except KeyboardInterrupt:
        sys.stderr.write("\nAssessment interrupted.\n")
        return settings.ReturnValues.USER_ABORT
    except Exception as ex:
        if cli.opts.debug:
            traceback.print_exc(file=sys.stderr)
        else:
            sys.stderr.write(str(ex) + "\n")
        return settings.ReturnValues.INTERNAL_EXCEPTION


if __name__ == "__main__":
    sys.exit(main())
