@@ -44,11 +44,10 @@ export class CxInstaller {
44
44
return path . join ( this . resourceDirPath , executableName ) ;
45
45
}
46
46
47
-
48
47
public async downloadIfNotInstalledCLI ( ) : Promise < void > {
49
48
try {
50
- await fs . promises . mkdir ( this . resourceDirPath , { recursive : true } ) ;
51
-
49
+ await fs . promises . mkdir ( this . resourceDirPath , { recursive : true } ) ;
50
+
52
51
if ( this . checkExecutableExists ( ) ) {
53
52
logger . info ( 'Executable already installed.' ) ;
54
53
return ;
@@ -60,15 +59,15 @@ export class CxInstaller {
60
59
logger . info ( 'Downloaded CLI to:' , zipPath ) ;
61
60
62
61
await this . extractArchive ( zipPath , this . resourceDirPath ) ;
63
-
62
+
64
63
fs . unlink ( zipPath , ( err ) => {
65
64
if ( err ) {
66
- logger . error ( 'Error deleting the file:' , err ) ;
65
+ logger . warn ( 'Error deleting the file:' , err ) ;
67
66
} else {
68
67
logger . info ( 'File deleted successfully!' ) ;
69
68
}
70
69
} ) ;
71
-
70
+
72
71
fs . chmodSync ( this . getExecutablePath ( ) , 0o755 ) ;
73
72
logger . info ( 'Extracted CLI to:' , this . resourceDirPath ) ;
74
73
} catch ( error ) {
@@ -90,13 +89,20 @@ export class CxInstaller {
90
89
private async downloadFile ( url : string , outputPath : string ) {
91
90
logger . info ( 'Downloading file from:' , url ) ;
92
91
const writer = fs . createWriteStream ( outputPath ) ;
93
- const response = await axios ( { url, responseType : 'stream' } ) ;
94
- response . data . pipe ( writer ) ;
95
92
96
- await finished ( writer ) ; // Use stream promises to await the writer
97
- logger . info ( 'Download finished' ) ;
98
- }
93
+ try {
94
+ const response = await axios ( { url , responseType : 'stream' } ) ;
95
+ response . data . pipe ( writer ) ;
99
96
97
+ await finished ( writer ) ; // Use stream promises to await the writer
98
+ logger . info ( 'Download finished' ) ;
99
+ } catch ( error ) {
100
+ logger . error ( 'Error downloading file:' , error . message || error ) ;
101
+ } finally {
102
+ writer . close ( ) ;
103
+ }
104
+ }
105
+
100
106
private checkExecutableExists ( ) : boolean {
101
107
return fs . existsSync ( this . getExecutablePath ( ) ) ;
102
108
}
@@ -110,7 +116,7 @@ export class CxInstaller {
110
116
const versionContent = await fsPromises . readFile ( versionFilePath , 'utf-8' ) ;
111
117
return versionContent . trim ( ) ;
112
118
} catch ( error ) {
113
- logger . error ( 'Error reading AST CLI version: ' + error . message ) ;
119
+ logger . warn ( 'Error reading AST CLI version: ' + error . message ) ;
114
120
return this . cliDefaultVersion ;
115
121
}
116
122
}
0 commit comments