feat: add solc install error report (#1027)
This commit is contained in:
parent
22bc981fd5
commit
f6d123241e
|
@ -372,10 +372,17 @@ impl Solc {
|
||||||
pub fn blocking_install(version: &Version) -> std::result::Result<(), svm::SolcVmError> {
|
pub fn blocking_install(version: &Version) -> std::result::Result<(), svm::SolcVmError> {
|
||||||
tracing::trace!("blocking installing solc version \"{}\"", version);
|
tracing::trace!("blocking installing solc version \"{}\"", version);
|
||||||
crate::report::solc_installation_start(version);
|
crate::report::solc_installation_start(version);
|
||||||
svm::blocking_install(version)?;
|
match svm::blocking_install(version) {
|
||||||
|
Ok(_) => {
|
||||||
crate::report::solc_installation_success(version);
|
crate::report::solc_installation_success(version);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Err(err) => {
|
||||||
|
crate::report::solc_installation_error(version, &err.to_string());
|
||||||
|
Err(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Verify that the checksum for this version of solc is correct. We check against the SHA256
|
/// Verify that the checksum for this version of solc is correct. We check against the SHA256
|
||||||
/// checksum from the build information published by binaries.soliditylang
|
/// checksum from the build information published by binaries.soliditylang
|
||||||
|
|
|
@ -661,7 +661,7 @@ mod tests {
|
||||||
assert_eq!(relative.path.original(), Path::new(&remapping.path));
|
assert_eq!(relative.path.original(), Path::new(&remapping.path));
|
||||||
assert!(relative.path.parent.is_none());
|
assert!(relative.path.parent.is_none());
|
||||||
|
|
||||||
let relative = RelativeRemapping::new(remapping.clone(), "/a/b");
|
let relative = RelativeRemapping::new(remapping, "/a/b");
|
||||||
assert_eq!(relative.to_relative_remapping(), Remapping::from_str("oz/=c/d/").unwrap());
|
assert_eq!(relative.to_relative_remapping(), Remapping::from_str("oz/=c/d/").unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,9 +99,12 @@ pub trait Reporter: 'static {
|
||||||
/// Invoked before a new [`Solc`] bin is installed
|
/// Invoked before a new [`Solc`] bin is installed
|
||||||
fn on_solc_installation_start(&self, _version: &Version) {}
|
fn on_solc_installation_start(&self, _version: &Version) {}
|
||||||
|
|
||||||
/// Invoked before a new [`Solc`] bin was successfully installed
|
/// Invoked after a new [`Solc`] bin was successfully installed
|
||||||
fn on_solc_installation_success(&self, _version: &Version) {}
|
fn on_solc_installation_success(&self, _version: &Version) {}
|
||||||
|
|
||||||
|
/// Invoked after a [`Solc`] installation failed
|
||||||
|
fn on_solc_installation_error(&self, _version: &Version, _error: &str) {}
|
||||||
|
|
||||||
/// Invoked if the import couldn't be resolved with these remappings
|
/// Invoked if the import couldn't be resolved with these remappings
|
||||||
fn on_unresolved_import(&self, _import: &Path, _remappings: &[Remapping]) {}
|
fn on_unresolved_import(&self, _import: &Path, _remappings: &[Remapping]) {}
|
||||||
|
|
||||||
|
@ -166,6 +169,11 @@ pub(crate) fn solc_installation_success(version: &Version) {
|
||||||
get_default(|r| r.reporter.on_solc_installation_success(version));
|
get_default(|r| r.reporter.on_solc_installation_success(version));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(unused)]
|
||||||
|
pub(crate) fn solc_installation_error(version: &Version, error: &str) {
|
||||||
|
get_default(|r| r.reporter.on_solc_installation_error(version, error));
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn unresolved_import(import: &Path, remappings: &[Remapping]) {
|
pub(crate) fn unresolved_import(import: &Path, remappings: &[Remapping]) {
|
||||||
get_default(|r| r.reporter.on_unresolved_import(import, remappings));
|
get_default(|r| r.reporter.on_unresolved_import(import, remappings));
|
||||||
}
|
}
|
||||||
|
@ -308,6 +316,10 @@ impl Reporter for BasicStdoutReporter {
|
||||||
println!("Successfully installed solc {}", version);
|
println!("Successfully installed solc {}", version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_solc_installation_error(&self, version: &Version, error: &str) {
|
||||||
|
eprintln!("Failed to install solc {}: {}", version, error);
|
||||||
|
}
|
||||||
|
|
||||||
fn on_unresolved_import(&self, import: &Path, remappings: &[Remapping]) {
|
fn on_unresolved_import(&self, import: &Path, remappings: &[Remapping]) {
|
||||||
println!(
|
println!(
|
||||||
"Unable to resolve import: \"{}\" with remappings:\n {}",
|
"Unable to resolve import: \"{}\" with remappings:\n {}",
|
||||||
|
|
Loading…
Reference in New Issue