pub struct AggregatedCompilerOutput<C: Compiler> {
pub errors: Vec<C::CompilationError>,
pub sources: VersionedSourceFiles,
pub contracts: VersionedContracts,
pub build_infos: Vec<RawBuildInfo<C::Language>>,
}
Expand description
The aggregated output of (multiple) compile jobs
This is effectively a solc version aware CompilerOutput
Fields§
§errors: Vec<C::CompilationError>
all errors from all CompilerOutput
sources: VersionedSourceFiles
All source files combined with the solc version used to compile them
contracts: VersionedContracts
All compiled contracts combined with the solc version used to compile them
build_infos: Vec<RawBuildInfo<C::Language>>
Implementations§
source§impl<C: Compiler> AggregatedCompilerOutput<C>
impl<C: Compiler> AggregatedCompilerOutput<C>
sourcepub fn slash_paths(&mut self)
pub fn slash_paths(&mut self)
Converts all \\
separators in all paths to /
pub fn diagnostics<'a>( &'a self, ignored_error_codes: &'a [u64], ignored_file_paths: &'a [PathBuf], compiler_severity_filter: Severity, ) -> OutputDiagnostics<'a, C>
pub fn is_empty(&self) -> bool
pub fn is_unchanged(&self) -> bool
sourcepub fn extend(
&mut self,
version: Version,
build_info: RawBuildInfo<C::Language>,
output: CompilerOutput<C::CompilationError>,
)
pub fn extend( &mut self, version: Version, build_info: RawBuildInfo<C::Language>, output: CompilerOutput<C::CompilationError>, )
adds a new CompilerOutput
to the aggregated output
sourcepub fn write_build_infos(
&self,
build_info_dir: impl AsRef<Path>,
) -> Result<(), SolcError>
pub fn write_build_infos( &self, build_info_dir: impl AsRef<Path>, ) -> Result<(), SolcError>
Creates all BuildInfo
files in the given build_info_dir
There can be multiple BuildInfo
, since we support multiple versions.
The created files have the md5 hash {_format,solcVersion,solcLongVersion,input}
as their
file name
sourcepub fn find_first(
&self,
contract: impl AsRef<str>,
) -> Option<CompactContractRef<'_>>
pub fn find_first( &self, contract: impl AsRef<str>, ) -> Option<CompactContractRef<'_>>
Finds the first contract with the given name
§Examples
use foundry_compilers::{artifacts::*, Project};
let project = Project::builder().build()?;
let output = project.compile()?.into_output();
let contract = output.find_first("Greeter").unwrap();
sourcepub fn remove_first(&mut self, contract: impl AsRef<str>) -> Option<Contract>
pub fn remove_first(&mut self, contract: impl AsRef<str>) -> Option<Contract>
Removes the first contract with the given name from the set
§Examples
use foundry_compilers::{artifacts::*, Project};
let project = Project::builder().build()?;
let mut output = project.compile()?.into_output();
let contract = output.remove_first("Greeter").unwrap();
sourcepub fn remove(
&mut self,
path: impl AsRef<Path>,
contract: impl AsRef<str>,
) -> Option<Contract>
pub fn remove( &mut self, path: impl AsRef<Path>, contract: impl AsRef<str>, ) -> Option<Contract>
Removes the contract with matching path and name
§Examples
use foundry_compilers::{artifacts::*, Project};
let project = Project::builder().build()?;
let mut output = project.compile()?.into_output();
let contract = output.remove("src/Greeter.sol", "Greeter").unwrap();
sourcepub fn remove_contract<'a>(
&mut self,
info: impl Into<ContractInfoRef<'a>>,
) -> Option<Contract>
pub fn remove_contract<'a>( &mut self, info: impl Into<ContractInfoRef<'a>>, ) -> Option<Contract>
Removes the contract with matching path and name using the <path>:<contractname>
pattern
where path
is optional.
If the path
segment is None
, then the first matching Contract
is returned, see
Self::remove_first
§Examples
use foundry_compilers::{artifacts::*, info::ContractInfo, Project};
let project = Project::builder().build()?;
let mut output = project.compile()?.into_output();
let info = ContractInfo::new("src/Greeter.sol:Greeter");
let contract = output.remove_contract(&info).unwrap();
sourcepub fn contracts_iter(&self) -> impl Iterator<Item = (&String, &Contract)>
pub fn contracts_iter(&self) -> impl Iterator<Item = (&String, &Contract)>
Iterate over all contracts and their names
sourcepub fn contracts_into_iter(self) -> impl Iterator<Item = (String, Contract)>
pub fn contracts_into_iter(self) -> impl Iterator<Item = (String, Contract)>
Iterate over all contracts and their names
sourcepub fn contracts_with_files_iter(
&self,
) -> impl Iterator<Item = (&PathBuf, &String, &Contract)>
pub fn contracts_with_files_iter( &self, ) -> impl Iterator<Item = (&PathBuf, &String, &Contract)>
Returns an iterator over (file
, name
, Contract
)
sourcepub fn contracts_with_files_into_iter(
self,
) -> impl Iterator<Item = (PathBuf, String, Contract)>
pub fn contracts_with_files_into_iter( self, ) -> impl Iterator<Item = (PathBuf, String, Contract)>
Returns an iterator over (file
, name
, Contract
)
sourcepub fn contracts_with_files_and_version_iter(
&self,
) -> impl Iterator<Item = (&PathBuf, &String, &Contract, &Version)>
pub fn contracts_with_files_and_version_iter( &self, ) -> impl Iterator<Item = (&PathBuf, &String, &Contract, &Version)>
Returns an iterator over (file
, name
, Contract
, Version
)
sourcepub fn contracts_with_files_and_version_into_iter(
self,
) -> impl Iterator<Item = (PathBuf, String, Contract, Version)>
pub fn contracts_with_files_and_version_into_iter( self, ) -> impl Iterator<Item = (PathBuf, String, Contract, Version)>
Returns an iterator over (file
, name
, Contract
, Version
)
sourcepub fn get(
&self,
path: impl AsRef<Path>,
contract: impl AsRef<str>,
) -> Option<CompactContractRef<'_>>
pub fn get( &self, path: impl AsRef<Path>, contract: impl AsRef<str>, ) -> Option<CompactContractRef<'_>>
Given the contract file’s path and the contract’s name, tries to return the contract’s bytecode, runtime bytecode, and ABI.
§Examples
use foundry_compilers::{artifacts::*, Project};
let project = Project::builder().build()?;
let output = project.compile()?.into_output();
let contract = output.get("src/Greeter.sol", "Greeter").unwrap();
sourcepub fn split(self) -> (VersionedSourceFiles, VersionedContracts)
pub fn split(self) -> (VersionedSourceFiles, VersionedContracts)
Returns the output’s source files and contracts separately, wrapped in helper types that provide several helper methods
§Examples
use foundry_compilers::Project;
let project = Project::builder().build()?;
let output = project.compile()?.into_output();
let (sources, contracts) = output.split();
sourcepub fn with_stripped_file_prefixes(self, base: impl AsRef<Path>) -> Self
pub fn with_stripped_file_prefixes(self, base: impl AsRef<Path>) -> Self
Strips the given prefix from all file paths to make them relative to the given
base
argument.
Convenience method for Self::strip_prefix_all() that consumes the type.
§Examples
Make all sources and contracts relative to the project’s root directory
use foundry_compilers::Project;
let project = Project::builder().build()?;
let output = project.compile()?.into_output().with_stripped_file_prefixes(project.root());
sourcepub fn strip_prefix_all(&mut self, base: impl AsRef<Path>) -> &mut Self
pub fn strip_prefix_all(&mut self, base: impl AsRef<Path>) -> &mut Self
Removes base
from all contract paths
source§impl<C: Compiler> AggregatedCompilerOutput<C>
impl<C: Compiler> AggregatedCompilerOutput<C>
sourcepub fn has_error(
&self,
ignored_error_codes: &[u64],
ignored_file_paths: &[PathBuf],
compiler_severity_filter: &Severity,
) -> bool
pub fn has_error( &self, ignored_error_codes: &[u64], ignored_file_paths: &[PathBuf], compiler_severity_filter: &Severity, ) -> bool
Whether the output contains a compiler error
This adheres to the given compiler_severity_filter
and also considers CompilationError
with the given Severity as errors. For example Severity::Warning will consider
CompilationErrors with Severity::Warning and Severity::Error as errors.
sourcepub fn has_warning<'a>(&self, filter: impl Into<ErrorFilter<'a>>) -> bool
pub fn has_warning<'a>(&self, filter: impl Into<ErrorFilter<'a>>) -> bool
Checks if there are any compiler warnings that are not ignored by the specified error codes and file paths.
Trait Implementations§
source§impl<C: Clone + Compiler> Clone for AggregatedCompilerOutput<C>
impl<C: Clone + Compiler> Clone for AggregatedCompilerOutput<C>
source§fn clone(&self) -> AggregatedCompilerOutput<C>
fn clone(&self) -> AggregatedCompilerOutput<C>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<C: Compiler> Default for AggregatedCompilerOutput<C>
impl<C: Compiler> Default for AggregatedCompilerOutput<C>
source§impl<C: PartialEq + Compiler> PartialEq for AggregatedCompilerOutput<C>
impl<C: PartialEq + Compiler> PartialEq for AggregatedCompilerOutput<C>
source§fn eq(&self, other: &AggregatedCompilerOutput<C>) -> bool
fn eq(&self, other: &AggregatedCompilerOutput<C>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<C: Compiler> Serialize for AggregatedCompilerOutput<C>
impl<C: Compiler> Serialize for AggregatedCompilerOutput<C>
impl<C: Compiler> StructuralPartialEq for AggregatedCompilerOutput<C>
Auto Trait Implementations§
impl<C> Freeze for AggregatedCompilerOutput<C>
impl<C> RefUnwindSafe for AggregatedCompilerOutput<C>
impl<C> Send for AggregatedCompilerOutput<C>
impl<C> Sync for AggregatedCompilerOutput<C>
impl<C> Unpin for AggregatedCompilerOutput<C>
impl<C> UnwindSafe for AggregatedCompilerOutput<C>
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);