pub struct Cgx { /* private fields */ }Expand description
Instance of the engine that powers the cgx tool.
This is packaged this way so that our main.rs is as minimal as possible. That’s useful for a
few reasons, but in our particular case it’s because we want to be able to add cgx as a crate
in others’ workspaces so that it can be invoked with cargo run or aliases and always
available to everyone using the project whether or not they previously installed cgx on their
systems.
Implementations§
Source§impl Cgx
impl Cgx
Sourcepub fn new(config: Config, reporter: MessageReporter) -> Result<Self>
pub fn new(config: Config, reporter: MessageReporter) -> Result<Self>
Create a new instance from a loaded configuration.
The config should be loaded using Config::load() with the CLI args.
Sourcepub fn prepare_bin_crate(
&self,
request: &CrateRequest,
overrides: &BuildOverrides,
) -> Result<PathBuf>
pub fn prepare_bin_crate( &self, request: &CrateRequest, overrides: &BuildOverrides, ) -> Result<PathBuf>
Resolve a crate request into its build plan and produce the path to its binary.
This is the shared load-and-build impl that powers cgx <crate>, --no-exec, --prefetch,
and each crate prefetched by --prefetch-all:
- loads the
CrateSpecandBuildOptionsfrom the engine’s config plusoverrides, - resolves the spec to a concrete version and downloads the source,
- returns a pre-built binary if one is available and enabled, otherwise builds from source.
Returns the fully-qualified path to the crate’s binary. Does NOT execute it.
Sourcepub fn list_targets(
&self,
request: &CrateRequest,
overrides: &BuildOverrides,
) -> Result<(String, Option<Target>, Vec<Target>, Vec<Target>)>
pub fn list_targets( &self, request: &CrateRequest, overrides: &BuildOverrides, ) -> Result<(String, Option<Target>, Vec<Target>, Vec<Target>)>
Resolve a crate request and list its runnable targets without building or executing.
Loads the CrateSpec/BuildOptions from config plus overrides and downloads the
source if needed, but does not build from source or look for a pre-built binary.
Returns (crate_name, default_target, bin_targets, example_targets).
Sourcepub fn list_configured_tools(&self) -> Result<String>
pub fn list_configured_tools(&self) -> Result<String>
Enumerate the configured tools and aliases in the config, then return the rendered
[tools]/[aliases] TOML.
Sourcepub fn prefetch(
&self,
label: &str,
request: &CrateRequest,
overrides: &BuildOverrides,
) -> Result<()>
pub fn prefetch( &self, label: &str, request: &CrateRequest, overrides: &BuildOverrides, ) -> Result<()>
Prefetch a single crate request: prepare its binary without executing it, reporting
progress via messages::RunnerMessage::PrefetchStarted and
messages::RunnerMessage::PrefetchCompleted.
This is the single-crate counterpart to Cgx::prefetch_all. label is the user-facing
identifier shown in those messages: the raw CLI crate spec (e.g. ripgrep@1.0), the
resolved crate name, or a <source> placeholder for source-only invocations.
Sourcepub fn prefetch_all(&self, overrides: &BuildOverrides) -> Result<()>
pub fn prefetch_all(&self, overrides: &BuildOverrides) -> Result<()>
Prefetch every tool and alias configured in the [tools]/[aliases] config sections.
Tools and aliases are grouped by the crate they resolve to, so each distinct crate is
prefetched exactly once no matter how many configured names point at it; the configured
names are reported alongside it. Every configured tool is attempted even if some fail; if
any failed, this returns error::Error::PrefetchAllFailed listing them.
Auto Trait Implementations§
impl !RefUnwindSafe for Cgx
impl !Send for Cgx
impl !Sync for Cgx
impl !UnwindSafe for Cgx
impl Freeze for Cgx
impl Unpin for Cgx
impl UnsafeUnpin for Cgx
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> 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<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);