Struct ethers_solc::AggregatedCompilerOutput
source · pub struct AggregatedCompilerOutput {
pub errors: Vec<Error>,
pub sources: VersionedSourceFiles,
pub contracts: VersionedContracts,
pub build_infos: BTreeMap<Version, RawBuildInfo>,
}
Expand description
The aggregated output of (multiple) compile jobs
This is effectively a solc version aware CompilerOutput
Fields§
§errors: Vec<Error>
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: BTreeMap<Version, RawBuildInfo>
Implementations§
source§impl AggregatedCompilerOutput
impl AggregatedCompilerOutput
sourcepub fn slash_paths(&mut self)
pub fn slash_paths(&mut self)
Converts all \\
separators in all paths to /
sourcepub fn has_error(
&self,
ignored_error_codes: &[u64],
compiler_severity_filter: &Severity
) -> bool
pub fn has_error( &self, ignored_error_codes: &[u64], compiler_severity_filter: &Severity ) -> bool
Whether the output contains a compiler error
sourcepub fn has_warning(&self, ignored_error_codes: &[u64]) -> bool
pub fn has_warning(&self, ignored_error_codes: &[u64]) -> bool
Whether the output contains a compiler warning
pub fn diagnostics<'a>( &'a self, ignored_error_codes: &'a [u64], compiler_severity_filter: Severity ) -> OutputDiagnostics<'_>
pub fn is_empty(&self) -> bool
pub fn is_unchanged(&self) -> bool
pub fn extend_all<I>(&mut self, out: I)
sourcepub fn extend(&mut self, version: Version, output: CompilerOutput)
pub fn extend(&mut self, version: Version, output: CompilerOutput)
adds a new CompilerOutput
to the aggregated output
sourcepub fn write_build_infos(
&self,
build_info_dir: impl AsRef<Path>
) -> Result<(), SolcIoError>
pub fn write_build_infos( &self, build_info_dir: impl AsRef<Path> ) -> Result<(), SolcIoError>
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
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
let output = project.compile().unwrap().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
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
let mut output = project.compile().unwrap().output();
let contract = output.remove_first("Greeter").unwrap();
sourcepub fn remove(
&mut self,
path: impl AsRef<str>,
contract: impl AsRef<str>
) -> Option<Contract>
pub fn remove( &mut self, path: impl AsRef<str>, contract: impl AsRef<str> ) -> Option<Contract>
Removes the contract with matching path and name
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
let mut output = project.compile().unwrap().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
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
use ethers_solc::info::ContractInfo;
let mut output = project.compile().unwrap().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 = (&String, &String, &Contract)>
pub fn contracts_with_files_iter( &self ) -> impl Iterator<Item = (&String, &String, &Contract)>
Returns an iterator over (file
, name
, Contract
)
sourcepub fn contracts_with_files_into_iter(
self
) -> impl Iterator<Item = (String, String, Contract)>
pub fn contracts_with_files_into_iter( self ) -> impl Iterator<Item = (String, String, Contract)>
Returns an iterator over (file
, name
, Contract
)
sourcepub fn contracts_with_files_and_version_iter(
&self
) -> impl Iterator<Item = (&String, &String, &Contract, &Version)>
pub fn contracts_with_files_and_version_iter( &self ) -> impl Iterator<Item = (&String, &String, &Contract, &Version)>
Returns an iterator over (file
, name
, Contract
, Version
)
sourcepub fn contracts_with_files_and_version_into_iter(
self
) -> impl Iterator<Item = (String, String, Contract, Version)>
pub fn contracts_with_files_and_version_into_iter( self ) -> impl Iterator<Item = (String, String, Contract, Version)>
Returns an iterator over (file
, name
, Contract
, Version
)
sourcepub fn get(
&self,
path: impl AsRef<str>,
contract: impl AsRef<str>
) -> Option<CompactContractRef<'_>>
pub fn get( &self, path: impl AsRef<str>, 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
§Example
use ethers_solc::Project;
use ethers_solc::artifacts::*;
let output = project.compile().unwrap().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
§Example
use ethers_solc::Project;
let output = project.compile().unwrap().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.
§Example
Make all sources and contracts relative to the project’s root directory
use ethers_solc::Project;
let project = Project::builder().build().unwrap();
let output = project.compile().unwrap().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
Trait Implementations§
source§impl Clone for AggregatedCompilerOutput
impl Clone for AggregatedCompilerOutput
source§fn clone(&self) -> AggregatedCompilerOutput
fn clone(&self) -> AggregatedCompilerOutput
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for AggregatedCompilerOutput
impl Debug for AggregatedCompilerOutput
source§impl Default for AggregatedCompilerOutput
impl Default for AggregatedCompilerOutput
source§fn default() -> AggregatedCompilerOutput
fn default() -> AggregatedCompilerOutput
source§impl<'de> Deserialize<'de> for AggregatedCompilerOutput
impl<'de> Deserialize<'de> for AggregatedCompilerOutput
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl PartialEq for AggregatedCompilerOutput
impl PartialEq for AggregatedCompilerOutput
source§fn eq(&self, other: &AggregatedCompilerOutput) -> bool
fn eq(&self, other: &AggregatedCompilerOutput) -> bool
self
and other
values to be equal, and is used
by ==
.