#!/usr/bin/python
"Load and run the main osg-build script"
# pylint: disable=C0103
from __future__ import print_function
import os
import sys
import traceback

from osgbuild import main
from osgbuild import constants
from osgbuild.error import Error, UsageError, type_of_error

log = main.log

try:
    sys.exit(main.main(sys.argv))
except UsageError as err:
    print(str(err), file=sys.stderr)
    print("""\
Type %(prog)s --help for usage info.

Common usage patterns follow:

To extract and patch the sources without building:
    %(prog)s prepare PACKAGE1 <PACKAGE2..n>

To look for potential errors in package(s):
    %(prog)s lint PACKAGE1 <PACKAGE2..n>

To build on the local machine:
    %(prog)s rpmbuild PACKAGE1 <PACKAGE2..n>
        OR
    %(prog)s mock PACKAGE1 <PACKAGE2..n>

To submit test build(s):
    %(prog)s koji --scratch PACKAGE1 <PACKAGE2..n>

To submit final build(s):
    %(prog)s koji PACKAGE1 <PACKAGE2..n>

To submit build(s) for EL6 or EL7 only:
    %(prog)s koji --el6 PACKAGE1 <PACKAGE2..n>
    %(prog)s koji --el7 PACKAGE1 <PACKAGE2..n>

Also see the documentation at:
    https://opensciencegrid.github.io/technology/software/osg-build-tools/
""" % {'prog': os.path.basename(sys.argv[0])}, file=sys.stderr)
    sys.exit(2)
except SystemExit as err:
    raise
except KeyboardInterrupt:
    print("", file=sys.stderr)
    print("-" * 79, file=sys.stderr)
    print("Interrupted", file=sys.stderr)
    print("-" * 79, file=sys.stderr)
    sys.exit(3)
except Error as err:
    print("-" * 79, file=sys.stderr)
    print(str(err), file=sys.stderr)
    print("-" * 79, file=sys.stderr)
    log.debug("Full traceback follows:")
    log.debug(traceback.format_exc())
    sys.exit(4)
except Exception as err:
    print("-" * 79, file=sys.stderr)
    print("An unhandled exception of type %s occurred:" % type_of_error(err), file=sys.stderr)
    print(str(err), file=sys.stderr)
    print("Please send a bug report with as much information", file=sys.stderr)
    print("about the circumstances as you can provide to:", file=sys.stderr)
    print(constants.BUGREPORT_EMAIL, file=sys.stderr)
    print("-" * 79, file=sys.stderr)
    print("Full traceback follows:", file=sys.stderr)
    traceback.print_exc()
    sys.exit(1)
