Skip to main content

## BootstrapCommand

# Struct BootstrapCommand

Source

    pub struct BootstrapCommand {
        command: Command,
        pub failure_behavior: BehaviorOnFailure,
        pub run_in_dry_run: bool,
        drop_bomb: DropBomb,
        should_cache: bool,
    }

Expand description

Wrapper around `std::process::Command`.

By default, the command will exit bootstrap if it fails. If you want to allow failures, use allow_failure. If you want to delay failures until the end of bootstrap, use delay_failure.

By default, the command will print its stdout/stderr to stdout/stderr of bootstrap (OutputMode::Print). If you want to handle the output programmatically, use BootstrapCommand::run_capture.

Bootstrap will print a debug log to stdout if the command fails and failure is not allowed.

By default, command executions are cached based on their workdir, program, arguments, and environment variables. This avoids re-running identical commands unnecessarily, unless caching is explicitly disabled.

## Fields§

§`command: Command`§`failure_behavior: BehaviorOnFailure`§`run_in_dry_run: bool`§`drop_bomb: DropBomb`§`should_cache: bool`

## Implementations§

Source§

### impl<'a> BootstrapCommand

Source

#### pub fn new<S: AsRef<OsStr>>(program: S) -> Self

Source

#### pub fn arg<S: AsRef<OsStr>>(&mut self, arg: S) -> &mut Self

Source

#### pub fn cached(&mut self) -> &mut Self

Cache the command. If it will be executed multiple times with the exact same arguments and environment variables in the same bootstrap invocation, the previous result will be loaded from memory.

Source

#### pub fn args<I, S>(&mut self, args: I) -> &mut Self
where I: IntoIterator<Item = S>, S: AsRef<OsStr>,

Source

#### pub fn env<K, V>(&mut self, key: K, val: V) -> &mut Self
where K: AsRef<OsStr>, V: AsRef<OsStr>,

Source

#### pub fn get_envs(&self) -> CommandEnvs<'_>

Source

#### pub fn get_args(&self) -> CommandArgs<'_>

Source

#### pub fn env_remove<K: AsRef<OsStr>>(&mut self, key: K) -> &mut Self

Source

#### pub fn current_dir<P: AsRef<Path>>(&mut self, dir: P) -> &mut Self

Source

#### pub fn stdin(&mut self, stdin: Stdio) -> &mut Self

Source

#### pub fn delay_failure(self) -> Self

Source

#### pub fn fail_fast(self) -> Self

Source

#### pub fn allow_failure(self) -> Self

Source

#### pub fn run_in_dry_run(&mut self) -> &mut Self

Source

#### pub fn run(&mut self, exec_ctx: impl AsRef<ExecutionContext>) -> bool

Run the command, while printing stdout and stderr. Returns true if the command has succeeded.

Source

#### pub fn run_capture( &mut self, exec_ctx: impl AsRef<ExecutionContext>, ) -> CommandOutput

Run the command, while capturing and returning all its output.

Source

#### pub fn run_capture_stdout( &mut self, exec_ctx: impl AsRef<ExecutionContext>, ) -> CommandOutput

Run the command, while capturing and returning stdout, and printing stderr.

Source

#### pub fn start_capture( &'a mut self, exec_ctx: impl AsRef<ExecutionContext>, ) -> DeferredCommand<'a>

Spawn the command in background, while capturing and returning all its output.

Source

#### pub fn start_capture_stdout( &'a mut self, exec_ctx: impl AsRef<ExecutionContext>, ) -> DeferredCommand<'a>

Spawn the command in background, while capturing and returning stdout, and printing stderr.

Source

#### pub fn stream_capture_stdout( &'a mut self, exec_ctx: impl AsRef<ExecutionContext>, ) -> Option<StreamingCommand>

Spawn the command in background, while capturing and returning stdout, and printing stderr. Returns None in dry-mode

Source

#### pub fn mark_as_executed(&mut self)

Mark the command as being executed, disarming the drop bomb. If this method is not called before the command is dropped, its drop will panic.

Source

#### pub fn get_created_location(&self) -> Location<'static>

Returns the source code location where this command was created.

Source

#### pub fn fingerprint(&self) -> CommandFingerprint

## Trait Implementations§

Source§

### impl Debug for BootstrapCommand

Source§

#### fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

### impl From<Cargo> for BootstrapCommand

Source§

#### fn from(cargo: Cargo) -> BootstrapCommand

Converts to this type from the input type.
Source§

### impl From<Command> for BootstrapCommand

Source§

#### fn from(command: Command) -> Self

Converts to this type from the input type.

## Auto Trait Implementations§

§

### impl Freeze for BootstrapCommand

§

### impl !RefUnwindSafe for BootstrapCommand

§

### impl Send for BootstrapCommand

§

### impl Sync for BootstrapCommand

§

### impl Unpin for BootstrapCommand

§

### impl UnsafeUnpin for BootstrapCommand

§

### impl !UnwindSafe for BootstrapCommand

## 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> From<T> for T

Source§

#### fn from(t: T) -> T

Returns the argument unchanged.

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.

§

### impl<T> Pointable for T

§

#### const ALIGN: usize

The alignment of pointer.
§

#### type Init = T

The type for initializers.
§

#### unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

#### unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

#### unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

#### unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

### impl<T> Same for T

Source§

#### type Output = T

Should always be `Self`
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.

## Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain `repr(...)` attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 264 bytes