Skip to main content

Env

Struct Env 

Source
pub struct Env { /* private fields */ }
Expand description

Environment variables and runtime dependencies used by Cursus.

Populated from the process environment at the binary boundary and threaded into the library so that internal functions never read std::env directly. Carries the CommandRunner, Filesystem, Git, and optional CodeForgeClient so that all I/O can be intercepted or replaced.

Implementations§

Source§

impl Env

Source

pub fn new( runner: Arc<dyn CommandRunner>, filesystem: Arc<dyn Filesystem>, git: Arc<dyn Git>, ) -> Self

Creates an Env with the given command runner, filesystem, and git implementation.

Use the builder methods (with_editor, with_code_forge_client) to add optional configuration.

Source

pub fn with_oidc_environment(self, oidc_environment: bool) -> Self

Sets whether an OIDC-capable CI environment is detected.

Source

pub fn with_node_auth_token_present(self, present: bool) -> Self

Sets whether NODE_AUTH_TOKEN is present in the environment.

Source

pub fn with_cargo_registry_token_present(self, present: bool) -> Self

Sets whether CARGO_REGISTRY_TOKEN is present in the environment.

Source

pub fn with_editor(self, editor: String) -> Self

Sets the editor to open changeset files with.

Source

pub fn with_code_forge_client(self, client: Arc<dyn CodeForgeClient>) -> Self

Sets the code forge client for API operations.

Source

pub fn with_editor_opt(self, editor: Option<String>) -> Self

Sets the editor from an Option, overwriting any previously set value.

Passing None clears a previously set editor.

Source

pub fn with_code_forge_client_result( self, client: Result<Arc<dyn CodeForgeClient>, String>, ) -> Self

Sets the code forge client from a Result, overwriting any previously set value.

Passing Err(reason) records why the client is unavailable.

Source

pub fn with_locale(self, locale: String) -> Self

Sets the locale for all user-visible messages.

The locale string should be a BCP 47 tag (e.g. "en", "en-US", "pt-BR"). Defaults to "en".

Source

pub fn with_dry_run_runner(self) -> Self

Wraps the current command runner in a DryRunCommandRunner that suppresses all mutating operations.

This is called automatically by [crate::run_with] when --dry-run is set, so all code paths (both the binary and integration tests) benefit from the dry-run protection without any manual composition.

Source

pub fn apply_global(self, global: &GlobalArgs) -> Self

Applies global CLI flags to this environment.

Currently handles --dry-run by wrapping the command runner in a DryRunCommandRunner.

Source

pub fn fs(&self) -> &dyn Filesystem

Returns the filesystem implementation.

Source

pub fn runner(&self) -> Arc<dyn CommandRunner>

Returns the command runner.

Source

pub fn git(&self) -> &dyn Git

Returns the git implementation.

Source

pub async fn run_editor_on(&self, path: &Path, cwd: &Path) -> Result<()>

Opens the user’s editor on the specified file.

Resolves the editor from self.editor(), falling back to the first available platform-appropriate editor: notepad on Windows, or the first of nano, vim, vi, emacs found on Unix. The working directory for the editor process is cwd.

The editor string is passed to run_shell_interactive so that multi-word values such as code --wait are interpreted correctly by the shell. The file path is quoted via [crate::shell::shell_quote] to prevent word splitting on filenames that contain spaces or other special characters.

§Errors

Returns an error if no editor is found or the editor process fails.

Source

pub async fn run( &self, program: &str, args: &[&str], cwd: &Path, ) -> Result<Output>

Runs a program with the given arguments in the specified directory.

Delegates to the underlying CommandRunner. Read-only.

Source

pub async fn run_mut( &self, program: &str, args: &[&str], cwd: &Path, ) -> Result<Output>

Runs a mutating program with the given arguments in the specified directory.

Delegates to the underlying CommandRunner. Skipped by DryRunCommandRunner.

Source

pub async fn run_interactive( &self, program: &str, args: &[&str], cwd: &Path, ) -> Result<ExitStatus>

Runs a program with inherited stdin/stdout/stderr for interactive use.

Delegates to the underlying CommandRunner. Skipped by DryRunCommandRunner.

Source

pub async fn run_shell_interactive( &self, command: &str, cwd: &Path, ) -> Result<ExitStatus>

Runs a shell command via the platform shell with inherited stdin/stdout/stderr.

Delegates to the underlying CommandRunner. Skipped by DryRunCommandRunner.

Source

pub async fn run_streaming( &self, command: &str, cwd: &Path, ) -> Result<ExitStatus>

Runs a shell command via the platform shell, streaming output live to the terminal.

Delegates to the underlying CommandRunner. Skipped by DryRunCommandRunner.

Trait Implementations§

Source§

impl Clone for Env

Source§

fn clone(&self) -> Env

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Env

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Env

§

impl !RefUnwindSafe for Env

§

impl Send for Env

§

impl Sync for Env

§

impl Unpin for Env

§

impl UnsafeUnpin for Env

§

impl !UnwindSafe for Env

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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