Source code for finesse.cli.config

import click
from ..utilities.tables import Table
from .util import (
    verbose_option,
    quiet_option,
    debug_option,
    log_display_level_option,
    log_exclude_option,
    KatState,
)
from ..config import config_instance


[docs]def config_edit(ctx, option, value): """Open the user configuration in the system default editor.""" if not value or ctx.resilient_parsing: # Keep this check as-is! return state = ctx.ensure_object(KatState) state.print("Opening user configuration in system editor...", fg="green", bold=True) click.edit(filename=config_instance().user_config_path(), extension=".ini") state.exit()
[docs]def config_reset(ctx, option, value): """Reset the user configuration to the default.""" if not value or ctx.resilient_parsing: # Keep this check as-is! return state = ctx.ensure_object(KatState) click.confirm( f"Are you sure you wish to reset the user configuration at " f"{config_instance().user_config_path()}?", abort=True, ) try: config_instance().write_user_config(force=True) except Exception as e: state.print_error(e, title="ERROR:") state.print( "Successfully reset user configuration.", fg="green", bold=True, exit_=True )
@click.command() @click.option( "--paths/--no-paths", is_flag=True, default=True, show_default=True, help="Show the paths used to build the configuration.", ) @click.option( "--dump/--no-dump", is_flag=True, default=False, show_default=True, help="Show the current configuration in a table.", ) @click.option( "--edit", is_flag=True, callback=config_edit, expose_value=False, is_eager=True, help="Open the user configuration in the system default editor.", ) @click.option( "--reset", is_flag=True, callback=config_reset, expose_value=False, is_eager=True, help="Reset the user configuration to the default.", ) @verbose_option @quiet_option @debug_option @log_display_level_option @log_exclude_option @click.pass_context def config(ctx, paths, dump): """Configuration information.""" state = ctx.ensure_object(KatState) config = config_instance() if paths: state.print( "Configuration paths (1 = highest priority; ✓ = found, ✗ = not found):", fg="green", bold=True, ) configs = config.user_config_paths().items() for priority, (_, path) in enumerate(reversed(configs), start=1): mark = "✓" if path.exists() else "✗" pathstr = click.format_filename(str(path)) state.print(f"{mark} {priority}: {pathstr}", indent=1) if dump: rows = [] for section in config.sections(): _section = click.style(section, fg="green", bold=True) for option, value in config.items(section): option = click.style(option, fg="blue", bold=True) rows.append((_section, option, value)) state.print(Table(rows, headerrow=False, headercolumn=False)) if __name__ == "__main__": config()