pub struct ExecutionContext {
pub scope: Scope,
pub shell: ShellState,
pub default_timeout: IrTimeout,
pub env: Arc<LayeredEnv>,
/* private fields */
}Fields§
§scope: Scope§shell: ShellState§default_timeout: IrTimeout§env: Arc<LayeredEnv>Implementations§
Source§impl ExecutionContext
impl ExecutionContext
pub fn new( scope: Scope, shell: ShellState, default_timeout: IrTimeout, env: Arc<LayeredEnv>, parent_span: SpanId, ) -> Self
Sourcepub fn current_span(&self) -> SpanId
pub fn current_span(&self) -> SpanId
The id of the innermost span currently active in this context. Used by every emission site so events reference the span they fired in.
pub fn push_span(&mut self, id: SpanId)
pub fn pop_span(&mut self)
Sourcepub fn set_block_span(&mut self, span: SpanId)
pub fn set_block_span(&mut self, span: SpanId)
Reset the span stack so emissions are parented on span. Used when a
shell is reused across shell blocks: each block opens a fresh
ShellBlock span and the VM’s events should reference that one rather
than the span from the shell’s original construction.
Sourcepub fn interp_chain<'a>(
&'a self,
scope_guard: &'a VarScope,
) -> (Vec<&'a VarScope>, &'a LayeredEnv)
pub fn interp_chain<'a>( &'a self, scope_guard: &'a VarScope, ) -> (Vec<&'a VarScope>, &'a LayeredEnv)
The scope chain + env that reproduce lookup precedence for the
current state, for the shared interpolation renderer. scope_guard
is the already-locked scope.vars(). Inside a fn call the barrier
hides shell/scope vars and the env fallback is the base env; outside
a call, shell vars shadow scope vars and an effect scope consults its
own (chained) env first.
Sourcepub async fn lookup(&self, key: &str) -> Option<String>
pub async fn lookup(&self, key: &str) -> Option<String>
Look up a variable by name. Follows the lookup chain per RFC R005.
Sourcepub fn current_captures_map(&self) -> &HashMap<String, String>
pub fn current_captures_map(&self) -> &HashMap<String, String>
The current capture frame as a raw map, for the interpolation
renderer. Inside a fn call this is the call frame’s captures;
otherwise the shell’s.
Sourcepub fn let_insert(&mut self, key: String, value: String)
pub fn let_insert(&mut self, key: String, value: String)
Insert a let variable into the current context.
Sourcepub async fn assign(&mut self, key: &str, value: String) -> Option<String>
pub async fn assign(&mut self, key: &str, value: String) -> Option<String>
Assign to an existing variable. Returns Some(prev) with the prior
value if found and updated, None if the key was not found in any
scope.
Sourcepub fn push_call(&mut self, name: String, args: Vec<(String, String)>)
pub fn push_call(&mut self, name: String, args: Vec<(String, String)>)
Push a function call frame.
Sourcepub fn set_timeout(&mut self, t: IrTimeout)
pub fn set_timeout(&mut self, t: IrTimeout)
Set the timeout on the current context.
Sourcepub fn fail_pattern(&self) -> Option<&FailPattern>
pub fn fail_pattern(&self) -> Option<&FailPattern>
Get the current fail pattern.
Sourcepub fn set_fail_pattern(&mut self, pattern: Option<FailPattern>)
pub fn set_fail_pattern(&mut self, pattern: Option<FailPattern>)
Set the fail pattern on the current context.
Sourcepub fn current_name(&self) -> String
pub fn current_name(&self) -> String
Current display name for logging. Reflects the current scope’s view of the shell only - no chain accumulation across exports.
Format:
<name>when no parent effect imported this shell (origin scope or directly at test scope without aliasing through an effect).<Effect>.<name>when the parent imported the source effect without aliasing it.<Alias>(<Effect>).<name>when the parent usedstart Effect as Alias.
Sourcepub fn reset_for_export(
&mut self,
new_scope: Scope,
parent_alias: Option<String>,
parent_effect_name: Option<String>,
shell_local_name: String,
)
pub fn reset_for_export( &mut self, new_scope: Scope, parent_alias: Option<String>, parent_effect_name: Option<String>, shell_local_name: String, )
Reset for shell export (effect -> test/parent effect). Replaces the shell’s view with how the new (parent) scope sees it: the parent’s alias for the source effect, the source effect’s original name, and the local key under which it was exposed.
Sourcepub fn set_captures(&mut self, captures: Captures)
pub fn set_captures(&mut self, captures: Captures)
Set captures on the current context.
Sourcepub fn current_fn_name(&self) -> Option<&str>
pub fn current_fn_name(&self) -> Option<&str>
The name of the innermost fn call frame, if we are inside one.
Sourcepub async fn snapshot_user_vars(&self) -> Vec<(String, String)>
pub async fn snapshot_user_vars(&self) -> Vec<(String, String)>
Snapshot user-visible variables at the current point of execution,
for failure diagnostics. Excludes the layered process env (already in
events.json :: env.bootstrap) and matcher captures. Sorted by key
for stable JSON output.
Sourcepub fn process_env(&self) -> Vec<(String, String)>
pub fn process_env(&self) -> Vec<(String, String)>
Build the environment variables map for spawning a shell process. For effects, the effect env already inherits the base env via LayeredEnv parent chain, so only the effect env is needed.
Auto Trait Implementations§
impl !RefUnwindSafe for ExecutionContext
impl !UnwindSafe for ExecutionContext
impl Freeze for ExecutionContext
impl Send for ExecutionContext
impl Sync for ExecutionContext
impl Unpin for ExecutionContext
impl UnsafeUnpin for ExecutionContext
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> 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);