@@ -19,6 +19,8 @@ var path = require('path')
1919var JSZip = require ( "jszip" ) ;
2020
2121var dirToWriteTo ;
22+ var filesToKeep = 10 ;
23+ var filesWritten = [ ] ;
2224
2325function onError ( err ) {
2426 console . error ( 'Headless Zip: an error occurred:' , err )
@@ -35,10 +37,18 @@ function deleteDir(directory) {
3537 }
3638}
3739
40+ function deleteFile ( filename ) {
41+ fs . unlink ( filename )
42+ }
43+
3844module . exports . setHeadlessOutputDir = function setHeadlessOutputDir ( dir ) {
3945 dirToWriteTo = dir ;
4046}
4147
48+ module . exports . setFilesToKeep = function setFilesToKeep ( numFiles ) {
49+ filesToKeep = numFiles ;
50+ }
51+
4252function timestamp ( ) {
4353 var date = new Date ( Date . now ( ) )
4454 var timestamp = pad ( date . getDate ( ) . toString ( ) ) + pad ( ( date . getMonth ( ) + 1 ) . toString ( ) ) + date . getFullYear ( ) . toString ( ) . substr ( 2 , 3 ) + '_'
@@ -63,14 +73,20 @@ module.exports.headlessZip = function headlessZip(dirToZip) {
6373 outputFileName = 'nodeappmetrics' + timestamp ( ) + '.hcd'
6474 }
6575
76+ filesWritten . push ( outputFileName )
77+ if ( filesWritten . length > filesToKeep ) {
78+ var earliest = filesWritten . shift ( )
79+ deleteFile ( earliest )
80+ }
81+
6682 var zip = new JSZip ( ) ;
6783 fs . readdir ( dirToZip , function ( error , files ) {
6884 if ( error ) {
69- onError ( error )
70- return
71- }
85+ onError ( error )
86+ return
87+ }
7288 for ( var i = 0 , len = files . length ; i < len ; i ++ ) {
73- zip . file ( files [ i ] , fs . readFileSync ( path . join ( dirToZip , files [ i ] ) ) , { compression : "DEFLATE" } )
89+ zip . file ( files [ i ] , fs . readFileSync ( path . join ( dirToZip , files [ i ] ) ) , { compression : "DEFLATE" } )
7490 }
7591
7692 zip . generateNodeStream ( { type :'nodebuffer' , streamFiles :true } )
0 commit comments