SuperConsole

Struct SuperConsole 

Source
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>

Source

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.

Source

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>

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn set_input_provider<Ty: InputProvider + Sized + 'static>( &self, provider: Ty, )

Set the current input provider.

Source

pub fn set_task_provider<Ty: TaskEventLogProvider + Sized + 'static>( &self, provider: Ty, )

Set the current event log task provider.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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).

Source

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).

Source

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>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more