45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
"""CLI output formatting utilities"""
|
|
|
|
import sys
|
|
import click
|
|
from typing import Any
|
|
|
|
|
|
def echo(message: str = "", color: str = None, err: bool = False) -> None:
|
|
"""Echo a message to stdout or stderr with optional color"""
|
|
click.secho(message, fg=color, err=err)
|
|
|
|
|
|
def note(message: str) -> None:
|
|
"""Print a note in blue"""
|
|
echo(f"Note: {message}", color="blue")
|
|
|
|
|
|
def warning(message: str) -> None:
|
|
"""Print a warning in yellow"""
|
|
echo(f"Warning: {message}", color="yellow")
|
|
|
|
|
|
def error(message: str) -> None:
|
|
"""Print an error in red"""
|
|
echo(f"Error: {message}", color="red", err=True)
|
|
|
|
|
|
def success(message: str) -> None:
|
|
"""Print a success message in green"""
|
|
echo(f"Success: {message}", color="green")
|
|
|
|
|
|
def bold(text: str) -> str:
|
|
"""Make text bold"""
|
|
return click.style(text, bold=True)
|
|
|
|
|
|
def confirm(message: str, default: bool = False) -> bool:
|
|
"""Ask for user confirmation"""
|
|
return click.confirm(message, default=default)
|
|
|
|
|
|
def prompt(message: str, default: Any = None) -> str:
|
|
"""Prompt user for input"""
|
|
return click.prompt(message, default=default)
|