Struct foundry_compilers::project_util::TempProject

source ·
pub struct TempProject<C: Compiler = MultiCompiler, T: ArtifactOutput = ConfigurableArtifacts> { /* private fields */ }
Available on crate feature project-util only.
Expand description

A Project wrapper that lives in a new temporary directory

Once TempProject is dropped, the temp dir is automatically removed, see TempDir::drop()

Implementations§

source§

impl<T: ArtifactOutput + Default> TempProject<MultiCompiler, T>

source

pub fn with_artifacts( paths: ProjectPathsConfigBuilder, artifacts: T, ) -> Result<Self>

Available on crate feature svm-solc only.

Creates a new temp project using the provided paths and artifacts handler. sets the project root to a temp dir

source

pub fn with_solc_settings(self, settings: impl Into<Settings>) -> Self

Overwrites the settings to pass to solc

source

pub fn set_solc(&mut self, solc: impl AsRef<str>) -> &mut Self

Available on crate feature svm-solc only.

Explicitly sets the solc version for the project

source§

impl<T: ArtifactOutput + Default> TempProject<MultiCompiler, T>

source

pub fn with_style(prefix: &str, style: PathStyle) -> Result<Self>

Available on crate feature svm-solc only.

Creates a new temp project for the given PathStyle

source§

impl TempProject<MultiCompiler, HardhatArtifacts>

source

pub fn hardhat() -> Result<Self>

Available on crate feature svm-solc only.

Creates an empty new hardhat style workspace in a new temporary dir

source§

impl<C: Compiler + Default, T: ArtifactOutput + Default> TempProject<C, T>

source

pub fn create_new( root: TempDir, inner: Project<C, T>, ) -> Result<Self, SolcIoError>

Makes sure all resources are created

source

pub fn new(paths: ProjectPathsConfigBuilder) -> Result<Self>

Available on crate feature svm-solc only.

Creates a new temp project using the provided paths and setting the project root to a temp dir

source

pub fn prefixed(prefix: &str, paths: ProjectPathsConfigBuilder) -> Result<Self>

Available on crate feature svm-solc only.

Creates a new temp project inside a tempdir with a prefixed directory

source

pub fn prefixed_with_artifacts( prefix: &str, paths: ProjectPathsConfigBuilder, artifacts: T, ) -> Result<Self>

Available on crate feature svm-solc only.

Creates a new temp project inside a tempdir with a prefixed directory and the given artifacts handler

source

pub fn dapptools() -> Result<Self>

Creates an empty new dapptools style workspace in a new temporary dir

source

pub fn dapptools_init() -> Result<Self>

Creates an initialized dapptools style workspace in a new temporary dir

source

pub fn project(&self) -> &Project<C, T>

source

pub fn project_mut(&mut self) -> &mut Project<C, T>

source

pub fn paths(&self) -> &ProjectPathsConfig<C::Language>

The configured paths of the project

source

pub fn paths_mut(&mut self) -> &mut ProjectPathsConfig<C::Language>

The configured paths of the project

source

pub fn copy_source(&self, source: impl AsRef<Path>) -> Result<()>

Copies a single file into the projects source

source

pub fn copy_sources<I, S>(&self, sources: I) -> Result<()>
where I: IntoIterator<Item = S>, S: AsRef<Path>,

source

pub fn copy_lib(&self, lib: impl AsRef<Path>) -> Result<()>

Copies a single file into the project’s main library directory

source

pub fn copy_libs<I, S>(&self, libs: I) -> Result<()>
where I: IntoIterator<Item = S>, S: AsRef<Path>,

Copy a series of files into the main library dir

source

pub fn add_lib( &self, name: impl AsRef<str>, content: impl AsRef<str>, ) -> Result<PathBuf>

Adds a new library file

source

pub fn add_basic_lib( &self, name: impl AsRef<str>, version: impl AsRef<str>, ) -> Result<PathBuf>

Adds a basic lib contract contract <name> {} as a new file

source

pub fn add_test( &self, name: impl AsRef<str>, content: impl AsRef<str>, ) -> Result<PathBuf>

Adds a new test file inside the project’s test dir

source

pub fn add_script( &self, name: impl AsRef<str>, content: impl AsRef<str>, ) -> Result<PathBuf>

Adds a new script file inside the project’s script dir

source

pub fn add_source( &self, name: impl AsRef<str>, content: impl AsRef<str>, ) -> Result<PathBuf>

Adds a new source file inside the project’s source dir

source

pub fn add_basic_source( &self, name: impl AsRef<str>, version: impl AsRef<str>, ) -> Result<PathBuf>

Adds a basic source contract contract <name> {} as a new file

source

pub fn add_contract( &self, name: impl AsRef<str>, content: impl AsRef<str>, ) -> Result<PathBuf>

Adds a solidity contract in the project’s root dir. This will also create all intermediary dirs.

source

pub fn artifacts_path(&self) -> &PathBuf

Returns the path to the artifacts directory

source

pub fn sources_path(&self) -> &PathBuf

Returns the path to the sources directory

source

pub fn cache_path(&self) -> &PathBuf

Returns the path to the cache file

source

pub fn root(&self) -> &Path

The root path of the temporary workspace

source

pub fn compile(&self) -> Result<ProjectCompileOutput<C, T>>

source

pub fn artifacts_snapshot( &self, ) -> Result<ArtifactsSnapshot<T::Artifact, C::Settings>>

Returns a snapshot of all cached artifacts

source

pub fn mock( &self, gen: &MockProjectGenerator, version: impl AsRef<str>, ) -> Result<()>

Populate the project with mock files

source

pub fn ensure_no_errors(&self) -> Result<&Self>

Compiles the project and ensures that the output does not contain errors

source

pub fn ensure_unchanged(&self) -> Result<&Self>

Compiles the project and ensures that the output is unchanged

source

pub fn ensure_changed(&self) -> Result<&Self>

Compiles the project and ensures that the output has changed

source

pub fn ensure_no_errors_recompile_unchanged(&self) -> Result<&Self>

Compiles the project and ensures that the output does not contain errors and no changes exists on recompiled.

This is a convenience function for ensure_no_errors + ensure_unchanged.

source

pub fn assert_no_errors_recompile_unchanged(&self) -> &Self

Compiles the project and asserts that the output does not contain errors and no changes exists on recompiled.

This is a convenience function for assert_no_errors + assert_unchanged.

source

pub fn assert_no_errors(&self) -> &Self

Compiles the project and asserts that the output does not contain errors

source

pub fn assert_unchanged(&self) -> &Self

Compiles the project and asserts that the output is unchanged

source

pub fn assert_changed(&self) -> &Self

Compiles the project and asserts that the output is changed

source

pub fn list_source_files(&self) -> Vec<PathBuf>

Returns a list of all source files in the project’s src directory

source§

impl TempProject

source

pub fn dapptools_with_ignore_paths( paths_to_ignore: Vec<PathBuf>, ) -> Result<Self>

Available on crate feature svm-solc only.
source

pub fn checkout(repo: impl AsRef<str>) -> Result<Self>

Available on crate feature svm-solc only.

Clones the given repo into a temp dir, initializes it recursively and configures it.

source

pub fn mocked( settings: &MockProjectSettings, version: impl AsRef<str>, ) -> Result<Self>

Available on crate feature svm-solc only.

Create a new temporary project and populate it with mock files.

source

pub fn mocked_random(version: impl AsRef<str>) -> Result<Self>

Available on crate feature svm-solc only.

Create a new temporary project and populate it with a random layout.

Trait Implementations§

source§

impl<T: ArtifactOutput + Default> AsRef<Project<MultiCompiler, T>> for TempProject<MultiCompiler, T>

source§

fn as_ref(&self) -> &Project<MultiCompiler, T>

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<T: ArtifactOutput> Debug for TempProject<MultiCompiler, T>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<C, T> Freeze for TempProject<C, T>
where C: Freeze, <C as Compiler>::Settings: Freeze, T: Freeze,

§

impl<C = MultiCompiler, T = ConfigurableArtifacts> !RefUnwindSafe for TempProject<C, T>

§

impl<C, T> Send for TempProject<C, T>
where T: Send,

§

impl<C, T> Sync for TempProject<C, T>
where T: Sync,

§

impl<C, T> Unpin for TempProject<C, T>
where C: Unpin, <C as Compiler>::Settings: Unpin, T: Unpin, <C as Compiler>::Language: Unpin,

§

impl<C = MultiCompiler, T = ConfigurableArtifacts> !UnwindSafe for TempProject<C, T>

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> 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> Paint for T
where T: ?Sized,

source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to Color::Primary.

§Example
println!("{}", value.primary());
source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to Color::Fixed.

§Example
println!("{}", value.fixed(color));
source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to Color::Rgb.

§Example
println!("{}", value.rgb(r, g, b));
source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to Color::Black.

§Example
println!("{}", value.black());
source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to Color::Red.

§Example
println!("{}", value.red());
source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to Color::Green.

§Example
println!("{}", value.green());
source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to Color::Yellow.

§Example
println!("{}", value.yellow());
source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to Color::Blue.

§Example
println!("{}", value.blue());
source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to Color::Magenta.

§Example
println!("{}", value.magenta());
source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to Color::Cyan.

§Example
println!("{}", value.cyan());
source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to Color::White.

§Example
println!("{}", value.white());
source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightBlack.

§Example
println!("{}", value.bright_black());
source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightRed.

§Example
println!("{}", value.bright_red());
source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightGreen.

§Example
println!("{}", value.bright_green());
source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightYellow.

§Example
println!("{}", value.bright_yellow());
source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightBlue.

§Example
println!("{}", value.bright_blue());
source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightMagenta.

§Example
println!("{}", value.bright_magenta());
source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightCyan.

§Example
println!("{}", value.bright_cyan());
source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightWhite.

§Example
println!("{}", value.bright_white());
source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to Color::Primary.

§Example
println!("{}", value.on_primary());
source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to Color::Fixed.

§Example
println!("{}", value.on_fixed(color));
source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to Color::Rgb.

§Example
println!("{}", value.on_rgb(r, g, b));
source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to Color::Black.

§Example
println!("{}", value.on_black());
source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to Color::Red.

§Example
println!("{}", value.on_red());
source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to Color::Green.

§Example
println!("{}", value.on_green());
source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to Color::Yellow.

§Example
println!("{}", value.on_yellow());
source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to Color::Blue.

§Example
println!("{}", value.on_blue());
source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to Color::Magenta.

§Example
println!("{}", value.on_magenta());
source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to Color::Cyan.

§Example
println!("{}", value.on_cyan());
source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to Color::White.

§Example
println!("{}", value.on_white());
source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightBlack.

§Example
println!("{}", value.on_bright_black());
source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightRed.

§Example
println!("{}", value.on_bright_red());
source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightGreen.

§Example
println!("{}", value.on_bright_green());
source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightYellow.

§Example
println!("{}", value.on_bright_yellow());
source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightBlue.

§Example
println!("{}", value.on_bright_blue());
source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightMagenta.

§Example
println!("{}", value.on_bright_magenta());
source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightCyan.

§Example
println!("{}", value.on_bright_cyan());
source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightWhite.

§Example
println!("{}", value.on_bright_white());
source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Bold.

§Example
println!("{}", value.bold());
source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Dim.

§Example
println!("{}", value.dim());
source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Italic.

§Example
println!("{}", value.italic());
source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Underline.

§Example
println!("{}", value.underline());

Returns self with the attr() set to Attribute::Blink.

§Example
println!("{}", value.blink());

Returns self with the attr() set to Attribute::RapidBlink.

§Example
println!("{}", value.rapid_blink());
source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Invert.

§Example
println!("{}", value.invert());
source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Conceal.

§Example
println!("{}", value.conceal());
source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Strike.

§Example
println!("{}", value.strike());
source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Mask.

§Example
println!("{}", value.mask());
source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Wrap.

§Example
println!("{}", value.wrap());
source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Linger.

§Example
println!("{}", value.linger());
source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to Quirk::Clear.

§Example
println!("{}", value.clear());
source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Resetting.

§Example
println!("{}", value.resetting());
source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Bright.

§Example
println!("{}", value.bright());
source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::OnBright.

§Example
println!("{}", value.on_bright());
source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

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

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T