-
Notifications
You must be signed in to change notification settings - Fork 10
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Adding color to CLI messages would be helpful for users to distinguish between error, success, or normal messages. Let's attempt to implement this without using any additional dependencies initially; if that's not possible, we can explore and discuss the packages to use.
Here is my POC for the color message (tested on Mac's terminal and iterm):
import sys
from typing import List, Union
class Styles:
RESET = "\033[0m"
BOLD = "\033[1m"
UNDERLINE = "\033[4m"
ITALIC = "\033[3m"
SELECTED = "\033[7m"
BLACK = "\033[30m"
GREY = "\33[90m"
CYAN = "\033[96m"
RED = "\033[91m"
GREEN = "\033[92m"
BLUE = "\033[34m"
YELLOW = "\033[93m"
MAGENTA = "\033[35m"
WHITE = "\033[37m"
class StyledText:
def __init__(self, text: str, style: Union[str, List[str]]):
self.text = text
self.styles = style if isinstance(style, List) else [style]
# creating styled text
joined_styles = "".join(self.styles)
self._styled_text = f"{joined_styles}{text}{Styles.RESET}"
def __str__(self) -> str:
return self._styled_text
def __repr__(self) -> str:
return self._styled_text
sys.stdout.write(str(StyledText("I am red.\n", Styles.RED)))
sys.stdout.write(str(StyledText("I am green.\n", Styles.GREEN)))
sys.stdout.write(str(StyledText("I am underlined.\n", Styles.UNDERLINE)))
sys.stdout.write(
str(StyledText("I am italic and blue.\n", [Styles.UNDERLINE, Styles.BLUE]))
)
sys.stdout.write(
str(StyledText("I am yellow selected.\n", [Styles.SELECTED, Styles.YELLOW]))
)
Ref: https://stackoverflow.com/questions/287871/how-do-i-print-colored-text-to-the-terminal
PravatJungBasnet
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Projects
Status
No status