cli.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:meta-package-manager 作者: kdeldycke 项目源码 文件源码
def cli(ctx, manager, output_format, stats, stop_on_error):
    """ CLI for multi-package manager upgrades. """
    level = logger.level
    try:
        level_to_name = logging._levelToName
    # Fallback to pre-Python 3.4 internals.
    except AttributeError:
        level_to_name = logging._levelNames
    level_name = level_to_name.get(level, level)
    logger.debug('Verbosity set to {}.'.format(level_name))

    # Print help screen and exit if no sub-commands provided.
    if ctx.invoked_subcommand is None:
        click.echo(ctx.get_help())
        ctx.exit()

    # Filters out the subset of managers selected by the user.
    target_managers = [
        m for mid, m in pool().items()
        if mid in set(manager)] if manager else pool().values()

    # Apply manager-level option to either raise on error or not.
    for m in target_managers:
        m.raise_on_error = stop_on_error

    # Pre-filters inactive managers.
    def keep_available(manager):
        if manager.available:
            return True
        logger.warning('Skip unavailable {} manager.'.format(manager.id))
    # Use an iterator to not trigger log messages for subcommands not using
    # this variable.
    active_managers = ifilter(keep_available, target_managers)

    # Silence all log message for JSON rendering unless in debug mode.
    rendering = RENDERING_MODES[output_format]
    if rendering == 'json' and level_name != 'DEBUG':
        logger.setLevel(logging.CRITICAL * 2)

    # Load up global options to the context.
    ctx.obj = {
        'target_managers': target_managers,
        'active_managers': active_managers,
        'rendering': rendering,
        'stats': stats}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号