#!/usr/bin/python3

"""
Python Bugzilla Interface

Simple command-line interface to bugzilla to allow:
 - searching
 - getting bug info
 - saving attachments

Requirements
------------
 - Python 3.3 or later

Classes
-------
 - BugzillaProxy - Server proxy for communication with Bugzilla
 - PrettyBugz - Command line interface to Bugzilla

"""

import argparse
import locale
import os
import sys

from bugz.argparsers import make_parser
from bugz.cli import PrettyBugz
from bugz.errhandling import BugzError
from bugz.log import log_error, log_info
from bugz.log import log_setDebugLevel, log_setQuiet
from bugz.configfile import get_config

def main():
	ArgParser = argparse.ArgumentParser(
		epilog = 'use -h after a sub-command for sub-command specific help')
	make_parser(ArgParser)
	args = ArgParser.parse_args()

	if not hasattr(args, 'func'):
		ArgParser.print_usage()
		return 1

	get_config(args)

	log_setDebugLevel(args.debug)
	log_setQuiet(args.quiet)

	try:
		bugz = PrettyBugz(args)
		args.func(bugz, args)
		return 0

	except BugzError as e:
		log_error(e)
		return 1

	except RuntimeError as e:
		log_error(e)
		return 1

	except KeyboardInterrupt:
		log_info('Stopped due to keyboard interrupt')
		return 1

	except:
		raise

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