Source code for ralph.cli.options
"""CLI option definitions for Ralph.
This module defines the option types and custom rich-click
components used throughout the CLI.
"""
from __future__ import annotations
from collections.abc import Mapping
from typing import TYPE_CHECKING
from rich.table import Table
from ralph.config.models import AgentConfig
if TYPE_CHECKING:
from ralph.display.context import DisplayContext
AgentTable = Mapping[str, AgentConfig]
def _should_show_secondary(display_context: DisplayContext) -> bool:
"""Return False when in compact mode, else True."""
return display_context.mode != "compact"
[docs]
def display_agents_table(
agents: AgentTable,
display_context: DisplayContext,
) -> None:
"""Display a formatted table of agents.
Args:
agents: Dictionary of agent configurations.
display_context: DisplayContext providing the console and mode for output.
"""
c = display_context.console
show_secondary = _should_show_secondary(display_context)
table = Table(title="Configured Agents", show_header=True)
table.add_column("Name", style="theme.cat.meta")
table.add_column("Command")
if show_secondary:
table.add_column("Parser", style="theme.cat.cont")
table.add_column("Can Commit", justify="center")
for name, agent in agents.items():
if show_secondary:
can_commit_str = "yes" if agent.can_commit else "no"
table.add_row(name, agent.cmd, str(agent.json_parser), can_commit_str)
else:
table.add_row(name, agent.cmd)
c.print(table)
[docs]
def display_providers_table(
providers: list[str],
display_context: DisplayContext,
) -> None:
"""Display a formatted table of providers.
Args:
providers: List of provider names.
display_context: DisplayContext providing the console and mode for output.
"""
c = display_context.console
show_status = _should_show_secondary(display_context)
table = Table(title="Available Providers", show_header=True)
table.add_column("Provider", style="theme.cat.meta")
if show_status:
table.add_column("Status", justify="center")
for provider in providers:
if show_status:
table.add_row(provider, "Available")
else:
table.add_row(provider)
c.print(table)