Changeset View
Changeset View
Standalone View
Standalone View
swh/core/cli/__init__.py
# Copyright (C) 2019 The Software Heritage developers | # Copyright (C) 2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import click | import click | ||||
import logging | import logging | ||||
import pkg_resources | import pkg_resources | ||||
logger = logging.getLogger(__name__) | LOG_LEVEL_NAMES = ['NOTSET', 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] | ||||
anlambert: I think the `WARN` level could be removed as it is not listed here https://docs.python. | |||||
Not Done Inline Actionsyub yub ardumont: yub yub | |||||
CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) | CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) | ||||
logger = logging.getLogger(__name__) | |||||
@click.group(context_settings=CONTEXT_SETTINGS) | @click.group(context_settings=CONTEXT_SETTINGS) | ||||
@click.option('--log-level', '-l', default='INFO', | @click.option('--log-level', '-l', default='INFO', | ||||
type=click.Choice(logging._nameToLevel.keys()), | type=click.Choice(LOG_LEVEL_NAMES), | ||||
help="Log level (default to INFO)") | help="Log level (default to INFO)") | ||||
@click.pass_context | @click.pass_context | ||||
def swh(ctx, log_level): | def swh(ctx, log_level): | ||||
"""Software Heritage Tool | """Command line interface for Software Heritage | ||||
""" | """ | ||||
log_level = logging.getLevelName(log_level) | |||||
logger.setLevel(log_level) | logger.setLevel(log_level) | ||||
ctx.ensure_object(dict) | ctx.ensure_object(dict) | ||||
ctx.obj['log_level'] = logging._nameToLevel[log_level] | ctx.obj['log_level'] = log_level | ||||
def main(): | def main(): | ||||
logging.basicConfig() | logging.basicConfig() | ||||
# load plugins that define cli sub commands | # load plugins that define cli sub commands | ||||
for entry_point in pkg_resources.iter_entry_points('swh.cli.subcommands'): | for entry_point in pkg_resources.iter_entry_points('swh.cli.subcommands'): | ||||
cmd = entry_point.load() | cmd = entry_point.load() | ||||
swh.add_command(cmd, name=entry_point.name) | swh.add_command(cmd, name=entry_point.name) | ||||
return swh(auto_envvar_prefix='SWH') | return swh(auto_envvar_prefix='SWH') | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
main() | main() |
I think the WARN level could be removed as it is not listed here https://docs.python.org/3/howto/logging.html#logging-levels