Separate out main to make testing easier
Separate logging setup and ensure main can take a list of arguments so that tests may provide a command line. Additionally ensure that the import subcommand provides a return status Change-Id: I1917913a4051b0da51bdfec01dcbde33e7db3116
This commit is contained in:
parent
07f6047986
commit
5f2eea0b6f
|
@ -639,6 +639,9 @@ def do_import(args):
|
|||
if args.branches:
|
||||
for branch in args.branches:
|
||||
logger.notice(" extra branch: '%s'", branch, dedent=False)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
# vim:sw=4:sts=4:ts=4:et:
|
||||
|
|
|
@ -95,36 +95,26 @@ def help(parser, args, commands=None):
|
|||
parser.print_help()
|
||||
|
||||
|
||||
def main():
|
||||
(cmds, parser) = get_parser()
|
||||
def setup_console_logging(options):
|
||||
|
||||
if not sys.argv:
|
||||
help(parser, sys.argv)
|
||||
return 0
|
||||
|
||||
if argparse_loaded:
|
||||
argcomplete.autocomplete(parser)
|
||||
args = parser.parse_args()
|
||||
if args.func == help:
|
||||
help(parser, args, cmds)
|
||||
return 0
|
||||
|
||||
args.log_level = getattr(logging, args.log_level.upper(), logging.NOTSET)
|
||||
console_log_level = getattr(logging, log.get_increment_level(args.verbose),
|
||||
options.log_level = getattr(logging, options.log_level.upper(),
|
||||
logging.NOTSET)
|
||||
if args.quiet:
|
||||
console_log_level = getattr(logging,
|
||||
log.get_increment_level(options.verbose),
|
||||
logging.NOTSET)
|
||||
if options.quiet:
|
||||
console_log_level = logging.NOTSET
|
||||
|
||||
# determine maximum logging requested for file and console provided they
|
||||
# are not disabled, and including stderr which is fixed at ERROR
|
||||
main_log_level = min([value
|
||||
for value in args.log_level, console_log_level
|
||||
for value in options.log_level, console_log_level
|
||||
if value != logging.NOTSET
|
||||
] + [logging.ERROR])
|
||||
logger = log.get_logger()
|
||||
logger.setLevel(main_log_level)
|
||||
|
||||
if not args.quiet:
|
||||
if not options.quiet:
|
||||
# configure logging to console for verbose/quiet messages
|
||||
console = logging.StreamHandler(sys.stdout)
|
||||
console.setLevel(console_log_level)
|
||||
|
@ -139,13 +129,39 @@ def main():
|
|||
err_con.setFormatter(logging.Formatter("%(levelname)-8s: %(message)s"))
|
||||
logger.addHandler(err_con)
|
||||
|
||||
if args.log_file:
|
||||
filehandler = logging.FileHandler(args.log_file)
|
||||
filehandler.setLevel(args.log_level)
|
||||
if options.log_file:
|
||||
filehandler = logging.FileHandler(options.log_file)
|
||||
filehandler.setLevel(options.log_level)
|
||||
_format = "%(asctime)s - %(name)s - %(levelname)s: %(message)s"
|
||||
filehandler.setFormatter(logging.Formatter(_format))
|
||||
logger.addHandler(filehandler)
|
||||
|
||||
return logger
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
|
||||
# We default argv to None and assign to sys.argv[1:] below because having
|
||||
# an argument default value be a mutable type in Python is a gotcha. See
|
||||
# http://bit.ly/1o18Vff
|
||||
if not argv:
|
||||
argv = sys.argv[1:]
|
||||
|
||||
(cmds, parser) = get_parser()
|
||||
|
||||
if not sys.argv:
|
||||
help(parser, argv)
|
||||
return 0
|
||||
|
||||
if argparse_loaded:
|
||||
argcomplete.autocomplete(parser)
|
||||
args = parser.parse_args(argv)
|
||||
if args.func == help:
|
||||
help(parser, args, cmds)
|
||||
return 0
|
||||
|
||||
logger = setup_console_logging(args)
|
||||
|
||||
if git.Git().version_info < (1, 7, 5):
|
||||
logger.fatal("Git-Upstream requires git version 1.7.5 or later")
|
||||
sys.exit(1)
|
||||
|
|
Loading…
Reference in New Issue