mirror of
https://github.com/pezkuwichain/revive-differential-tests.git
synced 2026-06-23 13:01:05 +00:00
set file permissions for downloaded solc
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
This commit is contained in:
Generated
+3
@@ -2867,6 +2867,8 @@ name = "revive-dt-config"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
|
"semver 1.0.26",
|
||||||
|
"temp-dir",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2884,6 +2886,7 @@ dependencies = [
|
|||||||
"revive-dt-format",
|
"revive-dt-format",
|
||||||
"revive-dt-node",
|
"revive-dt-node",
|
||||||
"revive-dt-node-interaction",
|
"revive-dt-node-interaction",
|
||||||
|
"revive-dt-solc-binaries",
|
||||||
"revive-solc-json-interface",
|
"revive-solc-json-interface",
|
||||||
"semver 1.0.26",
|
"semver 1.0.26",
|
||||||
"serde",
|
"serde",
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ revive-dt-format = { version = "0.1.0", path = "crates/format" }
|
|||||||
revive-dt-node = { version = "0.1.0", path = "crates/node" }
|
revive-dt-node = { version = "0.1.0", path = "crates/node" }
|
||||||
revive-dt-node-interaction = { version = "0.1.0", path = "crates/node-interaction" }
|
revive-dt-node-interaction = { version = "0.1.0", path = "crates/node-interaction" }
|
||||||
revive-dt-node-pool = { version = "0.1.0", path = "crates/node-pool" }
|
revive-dt-node-pool = { version = "0.1.0", path = "crates/node-pool" }
|
||||||
|
revive-dt-solc-binaries = { version = "0.1.0", path = "crates/solc-binaries" }
|
||||||
|
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
clap = { version = "4", features = ["derive"] }
|
clap = { version = "4", features = ["derive"] }
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ use std::{
|
|||||||
collections::HashSet,
|
collections::HashSet,
|
||||||
fs::{File, create_dir_all},
|
fs::{File, create_dir_all},
|
||||||
io::Write,
|
io::Write,
|
||||||
|
os::unix::fs::PermissionsExt,
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
sync::Mutex,
|
sync::Mutex,
|
||||||
};
|
};
|
||||||
@@ -50,17 +51,33 @@ impl SolcCacher {
|
|||||||
return Ok(file_path);
|
return Ok(file_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
if file_path.exists() {
|
|
||||||
self.cached_binaries.insert(file_path.clone());
|
|
||||||
return Ok(file_path);
|
|
||||||
}
|
|
||||||
|
|
||||||
create_dir_all(directory)?;
|
create_dir_all(directory)?;
|
||||||
|
|
||||||
let buf = downloader.download()?;
|
let Ok(mut file) = File::create_new(&file_path) else {
|
||||||
File::create_new(&file_path)
|
self.cached_binaries.insert(file_path.clone());
|
||||||
.expect("should not exist because of above early return")
|
return Ok(file_path);
|
||||||
.write_all(&buf)?;
|
};
|
||||||
|
|
||||||
|
file.write_all(&downloader.download()?)?;
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
|
{
|
||||||
|
let mut permissions = file.metadata()?.permissions();
|
||||||
|
let mode = permissions.mode() | 0o111;
|
||||||
|
permissions.set_mode(mode);
|
||||||
|
file.set_permissions(permissions)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
std::process::Command::new("xattr")
|
||||||
|
.arg("-d")
|
||||||
|
.arg("com.apple.quarantine")
|
||||||
|
.arg(&file_path)
|
||||||
|
.stderr(std::process::Stdio::null())
|
||||||
|
.stdout(std::process::Stdio::null())
|
||||||
|
.stdout(std::process::Stdio::null())
|
||||||
|
.spawn()?
|
||||||
|
.wait()?;
|
||||||
|
|
||||||
Ok(file_path)
|
Ok(file_path)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user