mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
69 lines
2.6 KiB
Python
69 lines
2.6 KiB
Python
from rich.console import Console
|
|
from rich.table import Table
|
|
from crewai.cli.command import BaseCommand
|
|
from crewai.cli.config import Settings, READONLY_SETTINGS_KEYS, HIDDEN_SETTINGS_KEYS
|
|
from typing import Any
|
|
|
|
console = Console()
|
|
|
|
|
|
class SettingsCommand(BaseCommand):
|
|
"""A class to handle CLI configuration commands."""
|
|
|
|
def __init__(self, settings_kwargs: dict[str, Any] | None = None):
|
|
super().__init__()
|
|
settings_kwargs = settings_kwargs or {}
|
|
self.settings = Settings(**settings_kwargs)
|
|
|
|
def list(self) -> None:
|
|
"""List all CLI configuration parameters."""
|
|
table = Table(title="CrewAI CLI Configuration")
|
|
table.add_column("Setting", style="cyan", no_wrap=True)
|
|
table.add_column("Value", style="green")
|
|
table.add_column("Description", style="yellow")
|
|
|
|
# Add all settings to the table
|
|
for field_name, field_info in Settings.model_fields.items():
|
|
if field_name in HIDDEN_SETTINGS_KEYS:
|
|
# Do not display hidden settings
|
|
continue
|
|
|
|
current_value = getattr(self.settings, field_name)
|
|
description = field_info.description or "No description available"
|
|
display_value = (
|
|
str(current_value) if current_value is not None else "Not set"
|
|
)
|
|
|
|
table.add_row(field_name, display_value, description)
|
|
|
|
console.print(table)
|
|
|
|
def set(self, key: str, value: str) -> None:
|
|
"""Set a CLI configuration parameter."""
|
|
|
|
readonly_settings = READONLY_SETTINGS_KEYS + HIDDEN_SETTINGS_KEYS
|
|
|
|
if not hasattr(self.settings, key) or key in readonly_settings:
|
|
console.print(
|
|
f"Error: Unknown or readonly configuration key '{key}'",
|
|
style="bold red",
|
|
)
|
|
console.print("Available keys:", style="yellow")
|
|
for field_name in Settings.model_fields.keys():
|
|
if field_name not in readonly_settings:
|
|
console.print(f" - {field_name}", style="yellow")
|
|
raise SystemExit(1)
|
|
|
|
setattr(self.settings, key, value)
|
|
self.settings.dump()
|
|
|
|
console.print(f"Successfully set '{key}' to '{value}'", style="bold green")
|
|
|
|
def reset_all_settings(self) -> None:
|
|
"""Reset all CLI configuration parameters to default values."""
|
|
self.settings.reset()
|
|
console.print(
|
|
"Successfully reset all configuration parameters to default values. It is recommended to run [bold yellow]'crewai login'[/bold yellow] to re-authenticate.",
|
|
style="bold green",
|
|
)
|