pub struct CommandOutcome {
pub command: String,
pub code: Option<i32>,
pub output_tail: String,
pub duration_ms: u64,
pub resource_blocked: bool,
}Expand description
Outcome of one shell command.
Fields§
§command: StringThe command, as configured.
code: Option<i32>Exit code, None on timeout or signal.
output_tail: StringTail of the combined output, for the report and the fix prompt.
duration_ms: u64Wall-clock time.
resource_blocked: boolSet only by magi itself, never inferred from output_tail: the
configured command was never actually run because a resource it
needs — right now, only the shared build cache’s lease or the
freshness check that must precede using it — was not available
within budget. Distinct from an ordinary failure or timeout (both of
which did run something and are evidence about the patch); this is
evidence about the machine, and must never be read as a verdict on
the tree it named. #[serde(default)] so every record written
before this field existed keeps reading as false — exactly what it
was.
Implementations§
Trait Implementations§
Source§impl Clone for CommandOutcome
impl Clone for CommandOutcome
Source§impl Debug for CommandOutcome
impl Debug for CommandOutcome
Source§impl<'de> Deserialize<'de> for CommandOutcome
impl<'de> Deserialize<'de> for CommandOutcome
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for CommandOutcome
impl RefUnwindSafe for CommandOutcome
impl Send for CommandOutcome
impl Sync for CommandOutcome
impl Unpin for CommandOutcome
impl UnsafeUnpin for CommandOutcome
impl UnwindSafe for CommandOutcome
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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