diff --git a/swh/core/cli/__init__.py b/swh/core/cli/__init__.py --- a/swh/core/cli/__init__.py +++ b/swh/core/cli/__init__.py @@ -7,23 +7,31 @@ import logging import pkg_resources +LOG_LEVEL_NAMES = ['NOTSET', 'WARN', 'DEBUG', 'CRITICAL', 'WARNING', + 'ERROR', 'INFO'] + +CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) + logger = logging.getLogger(__name__) -CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) +def log_level_option(f): + def callback(ctx, param, value): + log_level = logging.getLevelName(value) + logger.setLevel(log_level) + return log_level + return click.option('--log-level', '-l', default='INFO', + type=click.Choice(LOG_LEVEL_NAMES), + help="Log level (default to INFO)", + callback=callback)(f) @click.group(context_settings=CONTEXT_SETTINGS) -@click.option('--log-level', '-l', default='INFO', - type=click.Choice(logging._nameToLevel.keys()), - help="Log level (default to INFO)") @click.pass_context -def swh(ctx, log_level): - """Software Heritage Tool +def swh(ctx): + """Command line interface for Software Heritage """ - logger.setLevel(log_level) - ctx.ensure_object(dict) - ctx.obj['log_level'] = logging._nameToLevel[log_level] + pass def main(): diff --git a/swh/core/cli/db.py b/swh/core/cli/db.py --- a/swh/core/cli/db.py +++ b/swh/core/cli/db.py @@ -10,15 +10,17 @@ import click +from swh.core.cli import CONTEXT_SETTINGS, log_level_option logger = logging.getLogger(__name__) -@click.command() +@click.command(context_settings=CONTEXT_SETTINGS) +@log_level_option @click.argument('module', nargs=-1, required=True) @click.option('--db-name', '-d', help='Database name.', default='softwareheritage-dev', show_default=True) -def db_init(module, db_name=None): +def db_init(log_level, module, db_name=None): """Initialise a database for the Software Heritage . By default, attempts to create the database first. @@ -46,6 +48,8 @@ swh_db_version ) + logger.setLevel(log_level) + logger.debug('db_init %s dn_name=%s', module, db_name) dump_files = []