refactor __main__.cli and __main__.main

* __main__.cli is now just used to setup argparse and pass arguments to __main__.main
* __main__.main is now used to validate the arguments and pass them to the right functions
This commit is contained in:
Thor77 2016-05-21 22:20:15 +02:00
parent 23145b476b
commit ec62d4f439
1 changed files with 23 additions and 18 deletions

View File

@ -4,7 +4,7 @@ import logging
from os.path import abspath, exists
from tsstats.config import parse_config
from tsstats.exceptions import ConfigNotFound
from tsstats.exceptions import InvalidConfig
from tsstats.log import parse_logs
from tsstats.template import render_template
@ -35,28 +35,33 @@ def cli():
help='debug mode', action='store_true'
)
args = parser.parse_args()
if args.debug:
main(**vars(args))
def main(config=None, idmap=None, log=None, output=None, debug=False):
if config:
config = abspath(config)
if not exists(config):
logger.fatal('config not found (%s)', config)
idmap, log, output, debug = parse_config(config)
if debug:
logger.setLevel(logging.DEBUG)
main(args.config, args.idmap)
def main(config_path='config.ini', id_map_path='id_map.json'):
# check cmdline-args
config_path = abspath(config_path)
id_map_path = abspath(id_map_path)
if not exists(config_path):
raise ConfigNotFound(config_path)
if exists(id_map_path):
if idmap:
idmap = abspath(idmap)
if not exists(idmap):
logger.fatal('identmap not found (%s)', idmap)
# read id_map
id_map = json.load(open(id_map_path))
identmap = json.load(open(idmap))
else:
id_map = {}
identmap = None
log, output = parse_config(config_path)
clients = parse_logs(log, ident_map=id_map)
render_template(clients, output=output)
if not log or not output:
raise InvalidConfig('log or output missing')
clients = parse_logs(log, ident_map=identmap)
render_template(clients, output=abspath(output))
if __name__ == '__main__':