33import os
44import platform
55from dataclasses import dataclass , field
6+ from enum import Enum
67from pathlib import Path
8+ from typing import Union
79
8- RESET = "\u001b [0m"
910BOLD = "\u001b [1m"
10- MAIN = BOLD + "\u001b [034m"
11+ RESET = "\u001b [0m"
12+
13+
14+ class Color (Enum ):
15+ red = "\u001b [31m"
16+ green = "\u001b [32m"
17+ yellow = "\u001b [33m"
18+ blue = "\u001b [34m"
19+ magenta = "\u001b [35m"
20+ cyan = "\u001b [36m"
1121
1222
1323@dataclass
1424class Module :
15- title : str = field (init = False , default = None )
25+ title : Union [ str , None ] = field (init = False , default = None )
1626 value : str = field (init = False )
27+ title_color : str = field (default = Color ["blue" ])
28+ no_color : bool = field (default = False )
1729
18- def output (self ):
30+ def output (self ) -> str :
1931 if self .title is None :
2032 return self .value
21- return f"{ MAIN } { self .title } :{ RESET } { self .value } "
33+ if self .no_color :
34+ return f"{ self .title } : { self .value } "
35+ return f"{ BOLD } { self .title_color .value } { self .title } :{ RESET } { self .value } "
2236
2337
2438@dataclass
2539class Space (Module ):
2640 def __post_init__ (self ):
27- self .value = " "
41+ self .value = ""
2842
2943
3044@dataclass
@@ -33,9 +47,13 @@ def __post_init__(self):
3347 user = getpass .getuser ()
3448 host = os .uname ().nodename
3549 self .userhost = f"{ user } @{ host } "
36- self .value = MAIN + self .userhost + RESET
3750
38- def __len__ (self ):
51+ if self .no_color :
52+ self .value = self .userhost
53+ else :
54+ self .value = f"{ BOLD } { self .title_color .value } { self .userhost } { RESET } "
55+
56+ def __len__ (self ) -> int :
3957 return len (self .userhost )
4058
4159
@@ -102,7 +120,7 @@ def __post_init__(self):
102120 if os .name == "posix" :
103121 self .value = self .posix_os_name ()
104122
105- def posix_os_name (self ):
123+ def posix_os_name (self ) -> str :
106124 path = Path ("/etc/os-release" )
107125 with open (path ) as file :
108126 reader = csv .reader (file , delimiter = "=" )
0 commit comments