diff --git a/rptk/command_line.py b/rptk/command_line.py index 63482bf..75db433 100644 --- a/rptk/command_line.py +++ b/rptk/command_line.py @@ -1,24 +1,30 @@ import sys import logging +import argparse from rptk import configuration, dispatch def main(): log = logging.getLogger(__name__) try: + parser = argparse.ArgumentParser(add_help=False) + parser.add_argument( + '--debug', '-d', action='store_const', const=logging.DEBUG, dest='log_level', + help="print debug logging output", default=logging.WARNING + ) + args, argv = parser.parse_known_args() lh = logging.StreamHandler() lf = logging.Formatter(fmt="%(asctime)s %(name)s: %(levelname)s %(message)s") lh.setFormatter(lf) logging.getLogger().addHandler(lh) - logging.getLogger().setLevel(logging.DEBUG) + logging.getLogger().setLevel(args.log_level) except Exception as e: log.error(msg=e.message) return 1 try: log.debug(msg="started") - argv = sys.argv[1:] log.debug(msg="have %s arguments" % len(argv)) - config = configuration.Config(argv=argv) + config = configuration.Config(argv=argv, parser=parser) log.debug(msg="configuration done") dispatcher = dispatch.Dispatcher(config=config) log.debug(msg="dispatcher ready") diff --git a/rptk/configuration.py b/rptk/configuration.py index 1addf1a..b973fd7 100644 --- a/rptk/configuration.py +++ b/rptk/configuration.py @@ -1,18 +1,20 @@ import os import ConfigParser import argparse +import logging from rptk import _BaseObject from rptk.load import ClassLoader class Config(_BaseObject): - def __init__(self, argv=None, opts=None): + def __init__(self, argv=None, opts=None, parser=None): super(Config, self).__init__() self.log_init() if not argv: self.log.debug(msg="no command line args received") argv = list() - parser = argparse.ArgumentParser(add_help=False) + if not parser: + parser = argparse.ArgumentParser(add_help=False) config = ConfigParser.SafeConfigParser() default_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'rptk.conf') parser.add_argument( @@ -24,8 +26,9 @@ def __init__(self, argv=None, opts=None): config.read(partial_args.config_path) try: defaults = dict(config.items("defaults")) - except ConfigParser.Error: - raise + except ConfigParser.Error as e: + self.log.error(msg=e.message) + raise e if opts: if not isinstance(opts, dict): self.raise_type_error(arg=opts, cls=dict) diff --git a/rptk/rptk.conf b/rptk/rptk.conf index 16582dd..d95dd19 100644 --- a/rptk/rptk.conf +++ b/rptk/rptk.conf @@ -15,3 +15,4 @@ yaml: rptk.modules.format.yamlf.YamlFormat ios: rptk.modules.format.ios.IosFormat junos: rptk.modules.format.junos.JunosFormat bird: rptk.modules.format.bird.BirdFormat +