@@ -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