pub struct SpawnOpts {Show 13 fields
pub cwd: PathBuf,
pub env: Vec<(String, String)>,
pub label: Option<String>,
pub initiator: Initiator,
pub pty_cols: u16,
pub pty_rows: u16,
pub stdin_enabled: bool,
pub pin: bool,
pub beholder_select: BeholderSelect,
pub tty_attached: bool,
pub log_fd_enabled: bool,
pub origin: Option<String>,
pub argv: Option<Vec<String>>,
}Expand description
Options for TaskDriver::spawn_run.
Fields§
§cwd: PathBuf§env: Vec<(String, String)>Env vars set on the child process (merged on top of the current env).
label: Option<String>§initiator: Initiator§pty_cols: u16PTY column count. Defaults to 80.
pty_rows: u16PTY row count. Defaults to 24.
stdin_enabled: boolEnable stdin relay via TaskDriver::send_stdin.
pin: boolPin the run so the GC sweep does not drop its output during warm rolloff.
beholder_select: BeholderSelectBeholder attachment policy. Defaults to BeholderSelect::Auto.
tty_attached: booltrue when a human-facing terminal tile is attached. Causes Rewriter
beholders to decline in Auto mode so the human sees unmodified output.
log_fd_enabled: boolCreate a side-channel FIFO and export YAH_TASK_RUN / YAH_LOG_PIPE
so Tier-2 shim libraries (yah-log-rust, @yah/log) can emit structured
events. Has no effect on non-Unix platforms. Defaults to true.
origin: Option<String>Provenance tag stored on the run’s TaskRunMeta.origin (e.g.
Some("terminal") for an interactive shell). None is an ordinary job.
argv: Option<Vec<String>>Exec this argv directly instead of wrapping cmd in sh -c.
The default sh -c <cmd> is right for a job — the caller wrote a
command line and expects a shell to parse it. It is wrong for an
interactive shell: sh -c "zsh -l" leaves an inert sh as the PTY’s
foreground process group leader, so job control misbehaves, signals go
to the wrong process, and anything that reads the foreground pid (a
live-cwd probe, say) sees sh instead of the shell the operator is
typing into. Handing the exact argv here makes the shell itself the
child, which is also the only way to pass -l as a real argv element
so .zprofile / .profile actually run.
cmd is still what gets recorded on TaskRunMeta.command, so the run
reads the way the caller asked for it. Beholder argv rewriting is
bypassed when this is set: the caller has already decided the exact
process to exec, and a recorded rewrite=… that didn’t happen would be
a lie in the run metadata.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SpawnOpts
impl RefUnwindSafe for SpawnOpts
impl Send for SpawnOpts
impl Sync for SpawnOpts
impl Unpin for SpawnOpts
impl UnsafeUnpin for SpawnOpts
impl UnwindSafe for SpawnOpts
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> 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>, which can then be
downcast into Box<dyn 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>, which 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit 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<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 more