Struct foundry_compilers::project_util::TempProject
source · pub struct TempProject<C: Compiler = MultiCompiler, T: ArtifactOutput = ConfigurableArtifacts> { /* private fields */ }
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>
impl<T: ArtifactOutput + Default> TempProject<MultiCompiler, T>
sourcepub fn with_artifacts(
paths: ProjectPathsConfigBuilder,
artifacts: T,
) -> Result<Self>
Available on crate feature svm-solc
only.
pub fn with_artifacts( paths: ProjectPathsConfigBuilder, artifacts: T, ) -> Result<Self>
svm-solc
only.Creates a new temp project using the provided paths and artifacts handler. sets the project root to a temp dir
sourcepub fn with_solc_settings(self, settings: impl Into<Settings>) -> Self
pub fn with_solc_settings(self, settings: impl Into<Settings>) -> Self
Overwrites the settings to pass to solc
source§impl<T: ArtifactOutput + Default> TempProject<MultiCompiler, T>
impl<T: ArtifactOutput + Default> TempProject<MultiCompiler, T>
sourcepub fn with_style(prefix: &str, style: PathStyle) -> Result<Self>
Available on crate feature svm-solc
only.
pub fn with_style(prefix: &str, style: PathStyle) -> Result<Self>
svm-solc
only.Creates a new temp project for the given PathStyle
source§impl<C: Compiler + Default, T: ArtifactOutput + Default> TempProject<C, T>
impl<C: Compiler + Default, T: ArtifactOutput + Default> TempProject<C, T>
sourcepub fn create_new(
root: TempDir,
inner: Project<C, T>,
) -> Result<Self, SolcIoError>
pub fn create_new( root: TempDir, inner: Project<C, T>, ) -> Result<Self, SolcIoError>
Makes sure all resources are created
sourcepub fn new(paths: ProjectPathsConfigBuilder) -> Result<Self>
Available on crate feature svm-solc
only.
pub fn new(paths: ProjectPathsConfigBuilder) -> Result<Self>
svm-solc
only.Creates a new temp project using the provided paths and setting the project root to a temp dir
sourcepub fn prefixed(prefix: &str, paths: ProjectPathsConfigBuilder) -> Result<Self>
Available on crate feature svm-solc
only.
pub fn prefixed(prefix: &str, paths: ProjectPathsConfigBuilder) -> Result<Self>
svm-solc
only.Creates a new temp project inside a tempdir with a prefixed directory
sourcepub fn prefixed_with_artifacts(
prefix: &str,
paths: ProjectPathsConfigBuilder,
artifacts: T,
) -> Result<Self>
Available on crate feature svm-solc
only.
pub fn prefixed_with_artifacts( prefix: &str, paths: ProjectPathsConfigBuilder, artifacts: T, ) -> Result<Self>
svm-solc
only.Creates a new temp project inside a tempdir with a prefixed directory and the given artifacts handler
sourcepub fn dapptools() -> Result<Self>
pub fn dapptools() -> Result<Self>
Creates an empty new dapptools style workspace in a new temporary dir
sourcepub fn dapptools_init() -> Result<Self>
pub fn dapptools_init() -> Result<Self>
Creates an initialized dapptools style workspace in a new temporary dir
pub fn project(&self) -> &Project<C, T>
pub fn project_mut(&mut self) -> &mut Project<C, T>
sourcepub fn paths(&self) -> &ProjectPathsConfig<C::Language>
pub fn paths(&self) -> &ProjectPathsConfig<C::Language>
The configured paths of the project
sourcepub fn paths_mut(&mut self) -> &mut ProjectPathsConfig<C::Language>
pub fn paths_mut(&mut self) -> &mut ProjectPathsConfig<C::Language>
The configured paths of the project
sourcepub fn copy_source(&self, source: impl AsRef<Path>) -> Result<()>
pub fn copy_source(&self, source: impl AsRef<Path>) -> Result<()>
Copies a single file into the projects source
pub fn copy_sources<I, S>(&self, sources: I) -> Result<()>
sourcepub fn copy_lib(&self, lib: impl AsRef<Path>) -> Result<()>
pub fn copy_lib(&self, lib: impl AsRef<Path>) -> Result<()>
Copies a single file into the project’s main library directory
sourcepub fn copy_libs<I, S>(&self, libs: I) -> Result<()>
pub fn copy_libs<I, S>(&self, libs: I) -> Result<()>
Copy a series of files into the main library dir
sourcepub fn add_lib(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
pub fn add_lib( &self, name: impl AsRef<str>, content: impl AsRef<str>, ) -> Result<PathBuf>
Adds a new library file
sourcepub fn add_basic_lib(
&self,
name: impl AsRef<str>,
version: impl AsRef<str>,
) -> Result<PathBuf>
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
sourcepub fn add_test(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
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
sourcepub fn add_script(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
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
sourcepub fn add_source(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
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
sourcepub fn add_basic_source(
&self,
name: impl AsRef<str>,
version: impl AsRef<str>,
) -> Result<PathBuf>
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
sourcepub fn add_contract(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
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.
sourcepub fn artifacts_path(&self) -> &PathBuf
pub fn artifacts_path(&self) -> &PathBuf
Returns the path to the artifacts directory
sourcepub fn sources_path(&self) -> &PathBuf
pub fn sources_path(&self) -> &PathBuf
Returns the path to the sources directory
sourcepub fn cache_path(&self) -> &PathBuf
pub fn cache_path(&self) -> &PathBuf
Returns the path to the cache file
pub fn compile(&self) -> Result<ProjectCompileOutput<C, T>>
sourcepub fn artifacts_snapshot(
&self,
) -> Result<ArtifactsSnapshot<T::Artifact, C::Settings>>
pub fn artifacts_snapshot( &self, ) -> Result<ArtifactsSnapshot<T::Artifact, C::Settings>>
Returns a snapshot of all cached artifacts
sourcepub fn mock(
&self,
gen: &MockProjectGenerator,
version: impl AsRef<str>,
) -> Result<()>
pub fn mock( &self, gen: &MockProjectGenerator, version: impl AsRef<str>, ) -> Result<()>
Populate the project with mock files
sourcepub fn ensure_no_errors(&self) -> Result<&Self>
pub fn ensure_no_errors(&self) -> Result<&Self>
Compiles the project and ensures that the output does not contain errors
sourcepub fn ensure_unchanged(&self) -> Result<&Self>
pub fn ensure_unchanged(&self) -> Result<&Self>
Compiles the project and ensures that the output is unchanged
sourcepub fn ensure_changed(&self) -> Result<&Self>
pub fn ensure_changed(&self) -> Result<&Self>
Compiles the project and ensures that the output has changed
sourcepub fn ensure_no_errors_recompile_unchanged(&self) -> Result<&Self>
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
.
sourcepub fn assert_no_errors_recompile_unchanged(&self) -> &Self
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
.
sourcepub fn assert_no_errors(&self) -> &Self
pub fn assert_no_errors(&self) -> &Self
Compiles the project and asserts that the output does not contain errors
sourcepub fn assert_unchanged(&self) -> &Self
pub fn assert_unchanged(&self) -> &Self
Compiles the project and asserts that the output is unchanged
sourcepub fn assert_changed(&self) -> &Self
pub fn assert_changed(&self) -> &Self
Compiles the project and asserts that the output is changed
sourcepub fn list_source_files(&self) -> Vec<PathBuf>
pub fn list_source_files(&self) -> Vec<PathBuf>
Returns a list of all source files in the project’s src
directory
source§impl TempProject
impl TempProject
pub fn dapptools_with_ignore_paths( paths_to_ignore: Vec<PathBuf>, ) -> Result<Self>
svm-solc
only.sourcepub fn checkout(repo: impl AsRef<str>) -> Result<Self>
Available on crate feature svm-solc
only.
pub fn checkout(repo: impl AsRef<str>) -> Result<Self>
svm-solc
only.Clones the given repo into a temp dir, initializes it recursively and configures it.
sourcepub fn mocked(
settings: &MockProjectSettings,
version: impl AsRef<str>,
) -> Result<Self>
Available on crate feature svm-solc
only.
pub fn mocked( settings: &MockProjectSettings, version: impl AsRef<str>, ) -> Result<Self>
svm-solc
only.Create a new temporary project and populate it with mock files.
sourcepub fn mocked_random(version: impl AsRef<str>) -> Result<Self>
Available on crate feature svm-solc
only.
pub fn mocked_random(version: impl AsRef<str>) -> Result<Self>
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>
impl<T: ArtifactOutput + Default> AsRef<Project<MultiCompiler, T>> for TempProject<MultiCompiler, T>
source§fn as_ref(&self) -> &Project<MultiCompiler, T>
fn as_ref(&self) -> &Project<MultiCompiler, T>
source§impl<T: ArtifactOutput> Debug for TempProject<MultiCompiler, T>
impl<T: ArtifactOutput> Debug for TempProject<MultiCompiler, T>
Auto Trait Implementations§
impl<C, T> Freeze for TempProject<C, T>
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>
impl<C = MultiCompiler, T = ConfigurableArtifacts> !UnwindSafe for TempProject<C, T>
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> 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 moresource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
source§fn fg(&self, value: Color) -> Painted<&T>
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 bright_black(&self) -> Painted<&T>
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>
fn bright_red(&self) -> Painted<&T>
source§fn bright_green(&self) -> Painted<&T>
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>
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>
fn bright_blue(&self) -> Painted<&T>
source§fn bright_magenta(&self) -> Painted<&T>
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>
fn bright_cyan(&self) -> Painted<&T>
source§fn bright_white(&self) -> Painted<&T>
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>
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>
fn on_primary(&self) -> Painted<&T>
source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
source§fn on_bright_black(&self) -> Painted<&T>
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>
fn on_bright_red(&self) -> Painted<&T>
source§fn on_bright_green(&self) -> Painted<&T>
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>
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>
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>
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>
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>
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>
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 underline(&self) -> Painted<&T>
fn underline(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::Underline
.
§Example
println!("{}", value.underline());
source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::RapidBlink
.
§Example
println!("{}", value.rapid_blink());
source§fn quirk(&self, value: Quirk) -> Painted<&T>
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 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.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.source§fn whenever(&self, value: Condition) -> Painted<&T>
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);