@@ -8,6 +8,9 @@ const { v4: uuidv4 } = require('uuid');
8
8
const browserstack = require ( 'browserstack-local' ) ;
9
9
const crypto = require ( 'crypto' ) ;
10
10
const util = require ( 'util' ) ;
11
+ const { promisify } = require ( 'util' ) ;
12
+ const readdir = promisify ( fs . readdir ) ;
13
+ const stat = promisify ( fs . stat ) ;
11
14
12
15
const usageReporting = require ( "./usageReporting" ) ,
13
16
logger = require ( "./logger" ) . winstonLogger ,
@@ -1278,6 +1281,34 @@ exports.fetchZipSize = (fileName) => {
1278
1281
}
1279
1282
}
1280
1283
1284
+ const getDirectorySize = async function ( dir ) {
1285
+ try {
1286
+ const subdirs = ( await readdir ( dir ) ) ;
1287
+ const files = await Promise . all ( subdirs . map ( async ( subdir ) => {
1288
+ const res = path . resolve ( dir , subdir ) ;
1289
+ const s = ( await stat ( res ) ) ;
1290
+ return s . isDirectory ( ) ? getDirectorySize ( res ) : ( s . size ) ;
1291
+ } ) ) ;
1292
+ return files . reduce ( ( a , f ) => a + f , 0 ) ;
1293
+ } catch ( e ) {
1294
+ console . log ( `Error ${ e } ` )
1295
+ logger . debug ( 'Failed to get file or directory.' ) ;
1296
+ return 0 ;
1297
+ }
1298
+ } ;
1299
+
1300
+ exports . fetchFolderSize = async ( dir ) => {
1301
+ try {
1302
+ if ( fs . existsSync ( dir ) ) {
1303
+ return ( await getDirectorySize ( dir ) / 1024 / 1024 ) ;
1304
+ }
1305
+ return 0 ;
1306
+ } catch ( error ) {
1307
+ logger . debug ( `Failed to get directory size.` ) ;
1308
+ return 0 ;
1309
+ }
1310
+ }
1311
+
1281
1312
exports . getVideoConfig = ( cypressConfig ) => {
1282
1313
let conf = {
1283
1314
video : true ,
0 commit comments