Skip to content

Commit

Permalink
Mark the start/end in the logging output of the update commands.
Browse files Browse the repository at this point in the history
For #175.
  • Loading branch information
lemon24 committed Jul 5, 2020
1 parent 6bba29e commit 9bed854
Showing 1 changed file with 52 additions and 13 deletions.
65 changes: 52 additions & 13 deletions src/reader/_cli.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import functools
import logging
import os.path
import traceback
Expand All @@ -13,6 +14,8 @@

APP_NAME = reader.__name__

log = logging.getLogger(__name__)


def get_default_db_path(create_dir=False):
app_dir = click.get_app_dir(APP_NAME)
Expand Down Expand Up @@ -57,12 +60,52 @@ def setup_logging(verbose):
logging.getLogger('reader').setLevel(level)
handler = logging.StreamHandler()
formatter = logging.Formatter(
'%(asctime)s %(process)7s %(levelname)-7s %(message)s', '%Y-%m-%dT%H:%M:%S'
'%(asctime)s %(process)7s %(levelname)-8s %(message)s', '%Y-%m-%dT%H:%M:%S'
)
handler.setFormatter(formatter)
logging.getLogger('reader').addHandler(handler)


def log_verbose(fn):
@click.option('-v', '--verbose', count=True)
@functools.wraps(fn)
def wrapper(*args, verbose, **kwargs):
setup_logging(verbose)
return fn(*args, **kwargs)

return wrapper


def log_command(fn):
@log_verbose
@functools.wraps(fn)
def wrapper(*args, **kwargs):
ctx = click.get_current_context()
params = []
while ctx:
params.append((ctx.info_name, ctx.params))
ctx = ctx.parent

log.info(
"command started: %s", ' '.join(f"{n} {p}" for n, p in reversed(params))
)

try:
rv = fn(*args, **kwargs)
log.info("command finished successfully")
return rv

except Exception as e:
log.critical(
"command failed due to unexpected error: %s; traceback follows",
e,
exc_info=True,
)
click.get_current_context().exit(1)

return wrapper


@click.group()
@click.option(
'--db',
Expand Down Expand Up @@ -90,11 +133,10 @@ def cli(ctx, db, plugin):
@cli.command()
@click.argument('url')
@click.option('--update/--no-update', help="Update the feed after adding it.")
@click.option('-v', '--verbose', count=True)
@click.pass_obj
def add(kwargs, url, update, verbose):
@log_verbose
def add(kwargs, url, update):
"""Add a new feed."""
setup_logging(verbose)
reader = make_reader_with_plugins(**kwargs)
reader.add_feed(url)
if update:
Expand All @@ -103,11 +145,10 @@ def add(kwargs, url, update, verbose):

@cli.command()
@click.argument('url')
@click.option('-v', '--verbose', count=True)
@click.pass_obj
def remove(kwargs, url, verbose):
@log_verbose
def remove(kwargs, url):
"""Remove an existing feed."""
setup_logging(verbose)
reader = make_reader_with_plugins(**kwargs)
reader.remove_feed(url)

Expand All @@ -124,15 +165,14 @@ def remove(kwargs, url, verbose):
show_default=True,
help="Number of threads to use when getting the feeds.",
)
@click.option('-v', '--verbose', count=True)
@click.pass_obj
def update(kwargs, url, new_only, workers, verbose):
@log_command
def update(kwargs, url, new_only, workers):
"""Update one or all feeds.
If URL is not given, update all the feeds.
"""
setup_logging(verbose)
reader = make_reader_with_plugins(**kwargs)
if url:
reader.update_feed(url)
Expand Down Expand Up @@ -199,11 +239,10 @@ def search_disable(kwargs):


@search.command('update')
@click.option('-v', '--verbose', count=True)
@click.pass_obj
def search_update(kwargs, verbose):
@log_command
def search_update(kwargs):
"""Update the search index."""
setup_logging(verbose)
reader = make_reader_with_plugins(**kwargs)
reader.update_search()

Expand Down

0 comments on commit 9bed854

Please sign in to comment.