pub struct SuperConsole<StdoutTy: ConsoleOutputFeatures + IoWrite + Send + 'static, StderrTy: ConsoleOutputFeatures + IoWrite + Send + 'static> { /* private fields */ }Expand description
Effectively the console “renderer”.
SuperConsole is responsible for keeping track of the ‘rendering’
state, and managing it effectively. This crucially does not handle any of
the input tracking or any of the other console related bits.
It is called SuperConsole as it’s output is heavily inspired by the
Buck1 renderer also with the name SuperConsole. Buck2 also has a
concept of a SuperConsole, but I don’t like it’s output at all. So
don’t confuse it with the rust library ‘superconsole’, or it’s buck2
counterpart.
Implementations§
Source§impl SuperConsole<Stdout, Stderr>
impl SuperConsole<Stdout, Stderr>
Sourcepub fn new(app_name: &'static str) -> Result<Self, LisaError>
pub fn new(app_name: &'static str) -> Result<Self, LisaError>
Create a new super console that will print to the programs STDOUT/STDERR.
This will dynamically choose a renderer to use based off the default renderers that are present in lisa (color, json, and text).
§Errors
If we could not identify a renderer to use, If we cannot spawn a background task to render inputs.
Sourcepub fn new_preselected_renderers(
app_name: &'static str,
stdout_renderer: Box<dyn ConsoleRenderer>,
stderr_renderer: Box<dyn ConsoleRenderer>,
) -> Result<Self, LisaError>
pub fn new_preselected_renderers( app_name: &'static str, stdout_renderer: Box<dyn ConsoleRenderer>, stderr_renderer: Box<dyn ConsoleRenderer>, ) -> Result<Self, LisaError>
Create a new super console that will print to the programs STDOUT/STDERR.
In this case the renderers are explicitly passed in allowing for fully custom rendering. It is the callers job to make sure that they have respected all and any user preferences for which renderer they want to use.
§Errors
If we cannot spawn a background task to render inputs.
Source§impl<StdoutTy: ConsoleOutputFeatures + IoWrite + Send + 'static, StderrTy: ConsoleOutputFeatures + IoWrite + Send + 'static> SuperConsole<StdoutTy, StderrTy>
impl<StdoutTy: ConsoleOutputFeatures + IoWrite + Send + 'static, StderrTy: ConsoleOutputFeatures + IoWrite + Send + 'static> SuperConsole<StdoutTy, StderrTy>
Sourcepub fn new_with_outputs(
app_name: &'static str,
stdout: StdoutTy,
stderr: StderrTy,
) -> Result<Self, LisaError>
pub fn new_with_outputs( app_name: &'static str, stdout: StdoutTy, stderr: StderrTy, ) -> Result<Self, LisaError>
Create a new super console where outputs go somewhere specific (may not be stdout/stderr).
§Errors
If we cannot find a renderer for your given stdout/stderr types, or cannot spawn a background task to progress the input.
Sourcepub fn new_with_outputs_and_preselected_renderers(
app_name: &'static str,
stdout: StdoutTy,
stderr: StderrTy,
stdout_renderer: Box<dyn ConsoleRenderer>,
stderr_renderer: Box<dyn ConsoleRenderer>,
) -> Result<Self, LisaError>
pub fn new_with_outputs_and_preselected_renderers( app_name: &'static str, stdout: StdoutTy, stderr: StderrTy, stdout_renderer: Box<dyn ConsoleRenderer>, stderr_renderer: Box<dyn ConsoleRenderer>, ) -> Result<Self, LisaError>
Create a new console outputting to specific places, with specific renderers.
It is up to the caller to inherit all user preferences for the renderers.
§Errors
If we cannot spawn a task to tick along the console.
Sourcepub async fn flush(&self)
pub async fn flush(&self)
Request this console immediately working on flushing it’s contents.
THIS WILL NOT RETURN UNTIL THE FLUSH HAS BEEN COMPLETED.
Sourcepub fn get_render_state(
&self,
) -> MutexGuard<'_, RawMutex, UnlockedRendererState<StdoutTy, StderrTy>>
pub fn get_render_state( &self, ) -> MutexGuard<'_, RawMutex, UnlockedRendererState<StdoutTy, StderrTy>>
Get the current render state.
NOTE: WHILE HOLDING TO THIS YOU WILL BE LOCKING LOGS FROM RENDERING.
Sourcepub fn set_input_provider<Ty: InputProvider + Sized + 'static>(
&self,
provider: Ty,
)
pub fn set_input_provider<Ty: InputProvider + Sized + 'static>( &self, provider: Ty, )
Set the current input provider.
Sourcepub fn set_task_provider<Ty: TaskEventLogProvider + Sized + 'static>(
&self,
provider: Ty,
)
pub fn set_task_provider<Ty: TaskEventLogProvider + Sized + 'static>( &self, provider: Ty, )
Set the current event log task provider.
Sourcepub fn set_input_channel(&self, channel: BoundedSender<String>)
pub fn set_input_channel(&self, channel: BoundedSender<String>)
Set a channel to receive inputs on rather than needing to call
Self::get_unprocessed_inputs.
Sourcepub fn set_input_active(&self, active: bool) -> Result<(), LisaError>
pub fn set_input_active(&self, active: bool) -> Result<(), LisaError>
Mark the current input as active.
§Errors
If the input provider errors trying to be marked as active.
Sourcepub fn get_unprocessed_inputs(&self) -> Vec<String>
pub fn get_unprocessed_inputs(&self) -> Vec<String>
Get a series of unprocessed inputs from the input provider.
In general prefer using Self::set_input_channel which gives you a
channel you can poll for inputs with locking this like with poll for
inputs, and rendering.
Sourcepub fn choose_default_renderer(
features: &dyn ConsoleOutputFeatures,
environment_prefix: &str,
) -> Option<Box<dyn ConsoleRenderer>>
pub fn choose_default_renderer( features: &dyn ConsoleOutputFeatures, environment_prefix: &str, ) -> Option<Box<dyn ConsoleRenderer>>
Look at all the default renderers, and return whichever one is compatible if any are.
Sourcepub fn terminal_height_and_width() -> Option<(u16, u16)>
pub fn terminal_height_and_width() -> Option<(u16, u16)>
Cross OS wrapper for getting the current terminal height & width.
This backs off of termios on many non-windows OS, and then
GetConsoleScreenBufferInfo on windows. This will look at standard
in file descriptor (as standard out/standard error can be individually
redirected).
Sourcepub fn terminal_height() -> Option<u16>
pub fn terminal_height() -> Option<u16>
Cross OS wrapper for getting the current terminal height.
This backs off of termios on many non-windows OS, and then
GetConsoleScreenBufferInfo on windows. This will look at standard
in file descriptor (as standard out/standard error can be individually
redirected).
Sourcepub fn terminal_width() -> Option<u16>
pub fn terminal_width() -> Option<u16>
Cross OS wrapper for getting the current terminal width.
This backs off of termios on many non-windows OS, and then
GetConsoleScreenBufferInfo on windows. This will look at standard
in file descriptor (as standard out/standard error can be individually
redirected).
Trait Implementations§
Source§impl<StdoutTy: ConsoleOutputFeatures + IoWrite + Send, StderrTy: ConsoleOutputFeatures + IoWrite + Send> Drop for SuperConsole<StdoutTy, StderrTy>
impl<StdoutTy: ConsoleOutputFeatures + IoWrite + Send, StderrTy: ConsoleOutputFeatures + IoWrite + Send> Drop for SuperConsole<StdoutTy, StderrTy>
Auto Trait Implementations§
impl<StdoutTy, StderrTy> !Freeze for SuperConsole<StdoutTy, StderrTy>
impl<StdoutTy, StderrTy> !RefUnwindSafe for SuperConsole<StdoutTy, StderrTy>
impl<StdoutTy, StderrTy> Send for SuperConsole<StdoutTy, StderrTy>
impl<StdoutTy, StderrTy> Sync for SuperConsole<StdoutTy, StderrTy>
impl<StdoutTy, StderrTy> Unpin for SuperConsole<StdoutTy, StderrTy>
impl<StdoutTy, StderrTy> !UnwindSafe for SuperConsole<StdoutTy, StderrTy>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more