Skip to main content

RootPreflight

Struct RootPreflight 

Source
pub struct RootPreflight<'a> { /* private fields */ }
Expand description

The operational check a configured or default runner root must pass.

Built once per decision with the application-data layout it must not collide with, plus every other configured root on this host, and then asked about one candidate at a time.

let paths = AppPaths::discover()?;
let root = default_runner_root(&paths)?;
let checked = RootPreflight::new(&paths).check(&RootOwner::Host, &root)?;
if let Some(leaf) = checked.leaf_to_create() {
    // Creation is the caller's explicit step, never the preflight's.
    std::fs::create_dir(leaf)?;
}

Implementations§

Source§

impl<'a> RootPreflight<'a>

Source

pub fn new(app_paths: &'a AppPaths) -> Self

A preflight that asks the real operating system.

Source

pub fn with_probe( app_paths: &'a AppPaths, probe: &'a dyn FilesystemProbe, ) -> Self

A preflight that asks probe instead.

Source

pub fn against(self, owner: RootOwner, root: LocalAbsolutePath) -> Self

Registers another configured root the candidate must not overlap.

Pass the host runner root when checking a repository’s, every other repository’s root when checking one repository’s, and every repository’s root when checking the host’s. A root registered under the same owner as the candidate is skipped, so re-validating a setting that is already stored does not report it as overlapping itself.

Source

pub fn check( &self, owner: &RootOwner, root: &LocalAbsolutePath, ) -> Result<PreflightedRoot, RunnerRootError>

Decides whether root can hold runner workspaces on this host.

Nothing is created, removed or re-permissioned. On success the caller learns whether the directory already exists and, if not, the single leaf it must create.

§Errors

Any RunnerRootError other than the three that belong to default resolution.

Trait Implementations§

Source§

impl Debug for RootPreflight<'_>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for RootPreflight<'a>

§

impl<'a> !Send for RootPreflight<'a>

§

impl<'a> !Sync for RootPreflight<'a>

§

impl<'a> !UnwindSafe for RootPreflight<'a>

§

impl<'a> Freeze for RootPreflight<'a>

§

impl<'a> Unpin for RootPreflight<'a>

§

impl<'a> UnsafeUnpin for RootPreflight<'a>

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more