1+ # -*- coding: utf-8 -*-
12"""Shared output sink for managing console output across AWS tools."""
23
34import sys
4- from typing import Optional
55
66
77class OutputSink :
88 """Manages console output with different verbosity levels across AWS tools."""
9-
9+
1010 def __init__ (self , quiet : bool = False , debug : bool = False ):
1111 """Initialize output sink with verbosity settings."""
1212 self .quiet = quiet
1313 self .debug = debug
14-
14+
1515 def info (self , message : str ) -> None :
1616 """Print informational message (suppressed in quiet mode)."""
1717 if not self .quiet :
1818 print (message )
19-
19+
2020 def success (self , message : str ) -> None :
2121 """Print success message (suppressed in quiet mode)."""
2222 if not self .quiet :
2323 print (f"✅ { message } " )
24-
24+
2525 def warning (self , message : str ) -> None :
2626 """Print warning message (always shown unless quiet)."""
2727 if not self .quiet :
2828 print (f"⚠️ { message } " )
29-
29+
3030 def error (self , message : str ) -> None :
3131 """Print error message (always shown, even in quiet mode)."""
3232 print (f"❌ { message } " , file = sys .stderr )
33-
33+
3434 def debug_info (self , message : str ) -> None :
3535 """Print debug message (only in debug mode)."""
3636 if self .debug and not self .quiet :
3737 print (f"🔍 { message } " )
38-
38+
3939 def progress (self , message : str ) -> None :
4040 """Print progress message (only in debug mode)."""
4141 if self .debug and not self .quiet :
4242 print (f"⏳ { message } " )
43-
43+
4444 def separator (self , char : str = "=" , length : int = 80 ) -> None :
4545 """Print separator line (suppressed in quiet mode)."""
4646 if not self .quiet :
4747 print (char * length )
48-
48+
4949 def print_raw (self , message : str , file = None ) -> None :
5050 """Print raw message without formatting (respects quiet mode for stdout)."""
5151 if file == sys .stderr :
@@ -54,13 +54,13 @@ def print_raw(self, message: str, file=None) -> None:
5454 elif not self .quiet :
5555 # Print to stdout only if not quiet
5656 print (message , file = file )
57-
57+
5858 def metric (self , name : str , value : str ) -> None :
5959 """Print metric information (debug mode only)."""
6060 if self .debug and not self .quiet :
6161 print (f"📊 { name } : { value } " )
62-
62+
6363 def timing (self , operation : str , duration : float ) -> None :
64- """Print timing information (debug mode only)."""
64+ """Print timing information (debug mode only)."""
6565 if self .debug and not self .quiet :
66- print (f"⏱️ { operation } : { duration :.2f} s" )
66+ print (f"⏱️ { operation } : { duration :.2f} s" )
0 commit comments