write outputs to file, if selected (#847)
This commit is contained in:
parent
67f7dc017d
commit
dd915c99f6
|
@ -752,6 +752,7 @@ impl<'a> fmt::Display for OutputDiagnostics<'a> {
|
||||||
|
|
||||||
/// Represents a compiled solidity contract
|
/// Represents a compiled solidity contract
|
||||||
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct Contract {
|
pub struct Contract {
|
||||||
/// The Ethereum Contract Metadata.
|
/// The Ethereum Contract Metadata.
|
||||||
/// See https://docs.soliditylang.org/en/develop/metadata.html
|
/// See https://docs.soliditylang.org/en/develop/metadata.html
|
||||||
|
@ -764,7 +765,7 @@ pub struct Contract {
|
||||||
pub devdoc: DevDoc,
|
pub devdoc: DevDoc,
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
pub ir: Option<String>,
|
pub ir: Option<String>,
|
||||||
#[serde(default, rename = "storageLayout", skip_serializing_if = "StorageLayout::is_empty")]
|
#[serde(default, skip_serializing_if = "StorageLayout::is_empty")]
|
||||||
pub storage_layout: StorageLayout,
|
pub storage_layout: StorageLayout,
|
||||||
/// EVM-related outputs
|
/// EVM-related outputs
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -772,6 +773,8 @@ pub struct Contract {
|
||||||
/// Ewasm related outputs
|
/// Ewasm related outputs
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
pub ewasm: Option<Ewasm>,
|
pub ewasm: Option<Ewasm>,
|
||||||
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
|
pub ir_optimized: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Minimal representation of a contract with a present abi and bytecode.
|
/// Minimal representation of a contract with a present abi and bytecode.
|
||||||
|
|
|
@ -653,6 +653,29 @@ impl ArtifactOutput for MinimalCombinedArtifacts {
|
||||||
))
|
))
|
||||||
})?;
|
})?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(iropt) = &contract.ir_optimized {
|
||||||
|
fs::write(&file.with_extension("iropt"), iropt)
|
||||||
|
.map_err(|err| SolcError::io(err, file.with_extension("iropt")))?
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(ir) = &contract.ir {
|
||||||
|
fs::write(&file.with_extension("ir"), ir)
|
||||||
|
.map_err(|err| SolcError::io(err, file.with_extension("ir")))?
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(ewasm) = &contract.ewasm {
|
||||||
|
fs::write(&file.with_extension("ewasm"), serde_json::to_vec_pretty(&ewasm)?)
|
||||||
|
.map_err(|err| SolcError::io(err, file.with_extension("ewasm")))?;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(evm) = &contract.evm {
|
||||||
|
if let Some(asm) = &evm.assembly {
|
||||||
|
fs::write(&file.with_extension("asm"), asm)
|
||||||
|
.map_err(|err| SolcError::io(err, file.with_extension("asm")))?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let min = CompactContractBytecode::from(contract.clone());
|
let min = CompactContractBytecode::from(contract.clone());
|
||||||
fs::write(&file, serde_json::to_vec_pretty(&min)?)
|
fs::write(&file, serde_json::to_vec_pretty(&min)?)
|
||||||
.map_err(|err| SolcError::io(err, file))?
|
.map_err(|err| SolcError::io(err, file))?
|
||||||
|
|
Loading…
Reference in New Issue