Skip to content

Commit 535f74d

Browse files
Extract launcher to adjacent folder (#277)
1 parent e3d8d3a commit 535f74d

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

crates/icp/src/network/managed/cache.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,17 +115,21 @@ pub async fn download_launcher_version(
115115
let tmp_read = std::io::BufReader::new(&tmp);
116116
let decompressor = GzDecoder::new(tmp_read);
117117
let mut archive = Archive::new(decompressor);
118-
let extract_dir = camino_tempfile::tempdir().context(TempDirSnafu)?;
119-
archive.unpack(extract_dir.path()).context(ExtractSnafu {
120-
path: extract_dir.path(),
121-
})?;
118+
let extract_dir = paths.launcher_dir().join("tmp");
119+
crate::fs::create_dir_all(&extract_dir).context(TempDirSnafu)?;
122120
let tarball_name = format!("icp-cli-network-launcher-{arch}-{os}-{pkg_version}");
123-
let extracted_inner = extract_dir.path().join(&tarball_name);
121+
let extracted_dir_path = extract_dir.join(&tarball_name);
122+
if extracted_dir_path.exists() {
123+
crate::fs::remove_dir_all(&extracted_dir_path).context(RemoveExistingSnafu)?
124+
}
125+
archive
126+
.unpack(&extract_dir)
127+
.context(ExtractSnafu { path: &extract_dir })?;
124128
if version_path.exists() {
125129
crate::fs::remove_dir_all(&version_path).context(RemoveExistingSnafu)?
126130
}
127-
std::fs::rename(&extracted_inner, &version_path).context(MoveExtractedSnafu {
128-
from: extracted_inner,
131+
std::fs::rename(&extracted_dir_path, &version_path).context(MoveExtractedSnafu {
132+
from: extracted_dir_path,
129133
to: &version_path,
130134
})?;
131135
Ok((pkg_version, version_path.join("icp-cli-network-launcher")))
@@ -156,7 +160,7 @@ pub enum DownloadLauncherError {
156160
#[snafu(display("failed to create temporary file for download"))]
157161
TempFile { source: std::io::Error },
158162
#[snafu(display("failed to create temporary directory for extraction"))]
159-
TempDir { source: std::io::Error },
163+
TempDir { source: crate::fs::IoError },
160164
#[snafu(display("buffer failure in temporary file"))]
161165
Buffer { source: std::io::Error },
162166
#[snafu(display("failed to extract downloaded network launcher to {path}"))]

0 commit comments

Comments
 (0)