Files
hermes-agent/hermes_cli/colors.py

39 lines
937 B
Python
Raw Normal View History

2026-02-20 23:23:32 -08:00
"""Shared ANSI color utilities for Hermes CLI modules."""
import os
2026-02-20 23:23:32 -08:00
import sys
def should_use_color() -> bool:
"""Return True when colored output is appropriate.
Respects the NO_COLOR environment variable (https://no-color.org/)
and TERM=dumb, in addition to the existing TTY check.
"""
if os.environ.get("NO_COLOR") is not None:
return False
if os.environ.get("TERM") == "dumb":
return False
if not sys.stdout.isatty():
return False
return True
2026-02-20 23:23:32 -08:00
class Colors:
RESET = "\033[0m"
BOLD = "\033[1m"
DIM = "\033[2m"
RED = "\033[31m"
GREEN = "\033[32m"
YELLOW = "\033[33m"
BLUE = "\033[34m"
MAGENTA = "\033[35m"
CYAN = "\033[36m"
def color(text: str, *codes) -> str:
"""Apply color codes to text (only when color output is appropriate)."""
if not should_use_color():
2026-02-20 23:23:32 -08:00
return text
return "".join(codes) + text + Colors.RESET