@@ -58,34 +58,37 @@ export async function downloadProxy(version: string, targetPath: string = PATHS.
5858 // Ensure directory exists
5959 await fs . ensureDir ( path . dirname ( targetPath ) ) ;
6060
61- const writer = fs . createWriteStream ( targetPath ) ;
61+ const tmpPath = `${ targetPath } .download` ;
62+ await fs . remove ( tmpPath ) ;
63+
64+ const writer = fs . createWriteStream ( tmpPath ) ;
6265 const responseStream = await axios ( {
6366 url : downloadUrl ,
6467 method : 'GET' ,
6568 responseType : 'stream'
6669 } ) ;
6770
68- responseStream . data . pipe ( writer ) ;
69-
70- await new Promise ( ( resolve , reject ) => {
71- writer . on ( 'finish' , resolve ) ;
72- writer . on ( 'error' , reject ) ;
73- } ) ;
71+ try {
72+ responseStream . data . pipe ( writer ) ;
7473
75- logger . info ( 'Download complete.' ) ;
74+ await new Promise ( ( resolve , reject ) => {
75+ writer . on ( 'finish' , resolve ) ;
76+ writer . on ( 'error' , reject ) ;
77+ } ) ;
7678
77- logger . info ( 'Verifying checksum...' ) ;
78- try {
79- const isValid = await verifyChecksum ( targetPath , expectedChecksum ) ;
79+ logger . info ( 'Download complete.' ) ;
8080
81+ logger . info ( 'Verifying checksum...' ) ;
82+ const isValid = await verifyChecksum ( tmpPath , expectedChecksum ) ;
8183 if ( ! isValid ) {
8284 throw new Error ( 'Checksum verification failed' ) ;
8385 }
8486 logger . info ( 'Checksum verified.' ) ;
87+
88+ await fs . move ( tmpPath , targetPath , { overwrite : true } ) ;
8589 } catch ( err ) {
86- logger . warn ( 'Failed to verify checksum' , err ) ;
87- // If verification fails, we should probably remove the file
88- await fs . remove ( targetPath ) ;
90+ logger . warn ( 'Failed to download/verify proxy' , err ) ;
91+ await fs . remove ( tmpPath ) ;
8992 throw err ;
9093 }
9194
0 commit comments