@@ -12,8 +12,6 @@ const logger = require('./logger').winstonLogger,
12
12
config = require ( "./config" ) ;
13
13
14
14
const request = require ( 'request' ) ;
15
- const { inspect } = require ( 'util' ) ;
16
- const { reject } = require ( 'async' ) ;
17
15
18
16
19
17
let BUILD_ARTIFACTS_TOTAL_COUNT = 0 ;
@@ -100,26 +98,35 @@ const downloadAndUnzip = async (filePath, fileName, url) => {
100
98
const writer = fs . createWriteStream ( tmpFilePath ) ;
101
99
102
100
return new Promise ( async ( resolve , reject ) => {
103
- request . get ( url ) . on ( 'response' , function ( response ) {
104
- //ensure that the user can call `then()` only when the file has
105
- //been downloaded entirely.
106
- response . pipe ( writer ) ;
107
- let error = null ;
108
- writer . on ( 'error' , err => {
109
- error = err ;
110
- writer . close ( ) ;
111
- reject ( err ) ;
112
- } ) ;
113
- writer . on ( 'close' , async ( ) => {
114
- if ( ! error ) {
115
- await unzipFile ( filePath , fileName ) ;
116
- fs . unlinkSync ( tmpFilePath ) ;
117
- resolve ( true ) ;
101
+ try {
102
+ request . get ( url ) . on ( 'response' , function ( response ) {
103
+
104
+ if ( response . statusCode != 200 ) {
105
+ reject ( ) ;
106
+ } else {
107
+ //ensure that the user can call `then()` only when the file has
108
+ //been downloaded entirely.
109
+ response . pipe ( writer ) ;
110
+ let error = null ;
111
+ writer . on ( 'error' , err => {
112
+ error = err ;
113
+ writer . close ( ) ;
114
+ reject ( err ) ;
115
+ } ) ;
116
+ writer . on ( 'close' , async ( ) => {
117
+ if ( ! error ) {
118
+ await unzipFile ( filePath , fileName ) ;
119
+ fs . unlinkSync ( tmpFilePath ) ;
120
+ resolve ( true ) ;
121
+ }
122
+ //no need to call the reject here, as it will have been called in the
123
+ //'error' stream;
124
+ } ) ;
118
125
}
119
- //no need to call the reject here, as it will have been called in the
120
- //'error' stream;
121
126
} ) ;
122
- } ) ;
127
+ } catch ( err ) {
128
+ reject ( err ) ;
129
+ }
123
130
} ) ;
124
131
}
125
132
@@ -133,120 +140,126 @@ const unzipFile = async (filePath, fileName) => {
133
140
}
134
141
135
142
const sendUpdatesToBstack = async ( bsConfig , buildId , args , options , rawArgs ) => {
136
- options . url = `${ config . buildUrl } ${ buildId } /build_artifacts/status` ;
143
+ options . url = `${ config . buildUrl } ${ buildId } /build_artifacts/status` ;
137
144
138
- let cypressJSON = utils . getCypressJSON ( bsConfig ) ;
145
+ let cypressJSON = utils . getCypressJSON ( bsConfig ) ;
139
146
140
- let reporter = null ;
141
- if ( ! utils . isUndefined ( args . reporter ) ) {
142
- reporter = args . reporter ;
143
- } else if ( cypressJSON !== undefined ) {
144
- reporter = cypressJSON . reporter ;
145
- }
146
-
147
- let data = {
148
- feature_usage : {
149
- downloads : {
150
- eligible_download_folders : BUILD_ARTIFACTS_TOTAL_COUNT ,
151
- successfully_downloaded_folders : BUILD_ARTIFACTS_TOTAL_COUNT - BUILD_ARTIFACTS_FAIL_COUNT
152
- } ,
153
- reporter : reporter
147
+ let reporter = null ;
148
+ if ( ! utils . isUndefined ( args . reporter ) ) {
149
+ reporter = args . reporter ;
150
+ } else if ( cypressJSON !== undefined ) {
151
+ reporter = cypressJSON . reporter ;
154
152
}
155
- }
156
153
157
- options . formData = data ;
154
+ let data = {
155
+ feature_usage : {
156
+ downloads : {
157
+ eligible_download_folders : BUILD_ARTIFACTS_TOTAL_COUNT ,
158
+ successfully_downloaded_folders : BUILD_ARTIFACTS_TOTAL_COUNT - BUILD_ARTIFACTS_FAIL_COUNT
159
+ } ,
160
+ reporter : reporter
161
+ }
162
+ }
158
163
159
- try {
164
+ options . formData = data . toString ( ) ;
160
165
let responseData = null ;
161
- request . post ( options , function ( err , resp , data ) {
162
- if ( err ) {
163
- utils . sendUsageReport ( bsConfig , args , err , Constants . messageTypes . ERROR , 'api_failed_build_artifacts_status_update' , null , rawArgs ) ;
164
- } else {
165
- try {
166
- responseData = JSON . parse ( data ) ;
167
- } catch ( e ) {
168
- responseData = { } ;
169
- }
170
- if ( resp . statusCode != 200 ) {
171
- if ( responseData && responseData [ "error" ] ) {
172
- utils . sendUsageReport ( bsConfig , args , responseData [ "error" ] , Constants . messageTypes . ERROR , 'api_failed_build_artifacts_status_update' , null , rawArgs ) ;
166
+ return new Promise ( async ( resolve , reject ) => {
167
+ try {
168
+ request . post ( options , function ( err , resp , data ) {
169
+ if ( err ) {
170
+ utils . sendUsageReport ( bsConfig , args , err , Constants . messageTypes . ERROR , 'api_failed_build_artifacts_status_update' , null , rawArgs ) ;
171
+ reject ( err ) ;
172
+ } else {
173
+ try {
174
+ responseData = JSON . parse ( data ) ;
175
+ } catch ( e ) {
176
+ responseData = { } ;
177
+ }
178
+ if ( resp . statusCode != 200 ) {
179
+ if ( responseData && responseData [ "error" ] ) {
180
+ utils . sendUsageReport ( bsConfig , args , responseData [ "error" ] , Constants . messageTypes . ERROR , 'api_failed_build_artifacts_status_update' , null , rawArgs ) ;
181
+ reject ( responseData [ "error" ] )
182
+ }
183
+ }
173
184
}
174
- }
185
+ resolve ( )
186
+ } ) ;
187
+ } catch ( err ) {
188
+ utils . sendUsageReport ( bsConfig , args , err , Constants . messageTypes . ERROR , 'api_failed_build_artifacts_status_update' , null , rawArgs ) ;
189
+ reject ( err ) ;
175
190
}
176
191
} ) ;
177
- } catch ( err ) {
178
- utils . sendUsageReport ( bsConfig , args , err , Constants . messageTypes . ERROR , 'api_failed_build_artifacts_status_update' , null , rawArgs ) ;
179
- }
180
192
}
181
193
182
194
exports . downloadBuildArtifacts = async ( bsConfig , buildId , args , rawArgs ) => {
183
- BUILD_ARTIFACTS_FAIL_COUNT = 0 ;
184
- BUILD_ARTIFACTS_TOTAL_COUNT = 0 ;
185
-
186
- let options = {
187
- url : `${ config . buildUrl } ${ buildId } /build_artifacts` ,
188
- auth : {
189
- username : bsConfig . auth . username ,
190
- password : bsConfig . auth . access_key ,
191
- } ,
192
- headers : {
193
- 'User-Agent' : utils . getUserAgent ( ) ,
194
- } ,
195
- } ;
196
-
197
- let message = null ;
198
- let messageType = null ;
199
- let errorCode = null ;
200
-
201
- try {
202
- let buildDetails = null ;
203
- request . get ( options , async function ( err , resp , body ) {
204
- if ( err ) {
205
- utils . sendUsageReport ( bsConfig , args , err , Constants . messageTypes . ERROR , 'api_failed_build_artifacts' , null , rawArgs ) ;
206
- process . exitCode = Constants . ERROR_EXIT_CODE ;
207
- } else {
208
- try {
209
- buildDetails = JSON . parse ( body ) ;
210
- if ( resp . statusCode != 200 ) {
211
- logger . error ( 'Downloading the build artifacts failed.' ) ;
212
- logger . error ( `Error: Request failed with status code ${ resp . statusCode } ` )
213
- utils . sendUsageReport ( bsConfig , args , buildDetails , Constants . messageTypes . ERROR , 'api_failed_build_artifacts' , null , rawArgs ) ;
214
- process . exitCode = Constants . ERROR_EXIT_CODE ;
215
- } else {
216
- await createDirectories ( buildId , buildDetails ) ;
217
- await parseAndDownloadArtifacts ( buildId , buildDetails ) ;
195
+ return new Promise ( async ( resolve , reject ) => {
196
+ BUILD_ARTIFACTS_FAIL_COUNT = 0 ;
197
+ BUILD_ARTIFACTS_TOTAL_COUNT = 0 ;
198
+
199
+ let options = {
200
+ url : `${ config . buildUrl } ${ buildId } /build_artifacts` ,
201
+ auth : {
202
+ username : bsConfig . auth . username ,
203
+ password : bsConfig . auth . access_key ,
204
+ } ,
205
+ headers : {
206
+ 'User-Agent' : utils . getUserAgent ( ) ,
207
+ } ,
208
+ } ;
209
+
210
+ let message = null ;
211
+ let messageType = null ;
212
+ let errorCode = null ;
213
+
214
+ try {
215
+ let buildDetails = null ;
216
+ request . get ( options , async function ( err , resp , body ) {
217
+ if ( err ) {
218
+ utils . sendUsageReport ( bsConfig , args , err , Constants . messageTypes . ERROR , 'api_failed_build_artifacts' , null , rawArgs ) ;
219
+ process . exitCode = Constants . ERROR_EXIT_CODE ;
220
+ } else {
221
+ try {
222
+ buildDetails = JSON . parse ( body ) ;
223
+ if ( resp . statusCode != 200 ) {
224
+ logger . error ( 'Downloading the build artifacts failed.' ) ;
225
+ logger . error ( `Error: Request failed with status code ${ resp . statusCode } ` )
226
+ utils . sendUsageReport ( bsConfig , args , buildDetails , Constants . messageTypes . ERROR , 'api_failed_build_artifacts' , null , rawArgs ) ;
227
+ process . exitCode = Constants . ERROR_EXIT_CODE ;
228
+ } else {
229
+ await createDirectories ( buildId , buildDetails ) ;
230
+ await parseAndDownloadArtifacts ( buildId , buildDetails ) ;
231
+ if ( BUILD_ARTIFACTS_FAIL_COUNT > 0 ) {
232
+ messageType = Constants . messageTypes . ERROR ;
233
+ message = Constants . userMessages . DOWNLOAD_BUILD_ARTIFACTS_FAILED . replace ( '<build-id>' , buildId ) . replace ( '<machine-count>' , BUILD_ARTIFACTS_FAIL_COUNT ) ;
234
+ logger . error ( message ) ;
235
+ process . exitCode = Constants . ERROR_EXIT_CODE ;
236
+ } else {
237
+ messageType = Constants . messageTypes . SUCCESS ;
238
+ message = Constants . userMessages . DOWNLOAD_BUILD_ARTIFACTS_SUCCESS . replace ( '<build-id>' , buildId ) . replace ( '<user-path>' , process . cwd ( ) ) ;
239
+ logger . info ( message ) ;
240
+ }
241
+ await sendUpdatesToBstack ( bsConfig , buildId , args , options , rawArgs )
242
+ utils . sendUsageReport ( bsConfig , args , message , messageType , null , null , rawArgs ) ;
243
+ }
244
+ } catch ( err ) {
245
+ messageType = Constants . messageTypes . ERROR ;
246
+ errorCode = 'api_failed_build_artifacts' ;
218
247
if ( BUILD_ARTIFACTS_FAIL_COUNT > 0 ) {
219
248
messageType = Constants . messageTypes . ERROR ;
220
249
message = Constants . userMessages . DOWNLOAD_BUILD_ARTIFACTS_FAILED . replace ( '<build-id>' , buildId ) . replace ( '<machine-count>' , BUILD_ARTIFACTS_FAIL_COUNT ) ;
221
250
logger . error ( message ) ;
222
- process . exitCode = Constants . ERROR_EXIT_CODE ;
223
251
} else {
224
- messageType = Constants . messageTypes . SUCCESS ;
225
- message = Constants . userMessages . DOWNLOAD_BUILD_ARTIFACTS_SUCCESS . replace ( '<build-id>' , buildId ) . replace ( '<user-path>' , process . cwd ( ) ) ;
226
- logger . info ( message ) ;
252
+ logger . error ( 'Downloading the build artifacts failed.' ) ;
227
253
}
228
- await sendUpdatesToBstack ( bsConfig , buildId , args , options , rawArgs ) ;
229
- utils . sendUsageReport ( bsConfig , args , message , messageType , null , null , rawArgs ) ;
230
- }
231
- } catch ( err ) {
232
- messageType = Constants . messageTypes . ERROR ;
233
- errorCode = 'api_failed_build_artifacts' ;
234
- if ( BUILD_ARTIFACTS_FAIL_COUNT > 0 ) {
235
- messageType = Constants . messageTypes . ERROR ;
236
- message = Constants . userMessages . DOWNLOAD_BUILD_ARTIFACTS_FAILED . replace ( '<build-id>' , buildId ) . replace ( '<machine-count>' , BUILD_ARTIFACTS_FAIL_COUNT ) ;
237
- logger . error ( message ) ;
238
- } else {
239
- logger . error ( 'Downloading the build artifacts failed.' ) ;
254
+ utils . sendUsageReport ( bsConfig , args , err , messageType , errorCode , null , rawArgs ) ;
255
+ logger . error ( `Error: Request failed with status code ${ resp . statusCode } ` )
256
+ process . exitCode = Constants . ERROR_EXIT_CODE ;
240
257
}
241
- utils . sendUsageReport ( bsConfig , args , err , messageType , errorCode , null , rawArgs ) ;
242
- logger . error ( err . message ) ;
243
- logger . error ( `Error: Request failed with status code ${ resp . statusCode } ` )
244
- process . exitCode = Constants . ERROR_EXIT_CODE ;
245
258
}
246
- }
247
- } ) ;
248
- } catch ( err ) {
249
- utils . sendUsageReport ( bsConfig , args , err , Constants . messageTypes . ERROR , 'api_failed_build_artifacts' , null , rawArgs ) ;
250
- process . exitCode = Constants . ERROR_EXIT_CODE ;
251
- }
259
+ } ) ;
260
+ } catch ( err ) {
261
+ utils . sendUsageReport ( bsConfig , args , err , Constants . messageTypes . ERROR , 'api_failed_build_artifacts' , null , rawArgs ) ;
262
+ process . exitCode = Constants . ERROR_EXIT_CODE ;
263
+ }
264
+ } ) ;
252
265
} ;
0 commit comments