RollingFileStream.js 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /* automatically generated by JSCoverage - do not edit */
  2. if (typeof _$jscoverage === 'undefined') _$jscoverage = {};
  3. if (! _$jscoverage['streams/RollingFileStream.js']) {
  4. _$jscoverage['streams/RollingFileStream.js'] = [];
  5. _$jscoverage['streams/RollingFileStream.js'][1] = 0;
  6. _$jscoverage['streams/RollingFileStream.js'][2] = 0;
  7. _$jscoverage['streams/RollingFileStream.js'][9] = 0;
  8. _$jscoverage['streams/RollingFileStream.js'][11] = 0;
  9. _$jscoverage['streams/RollingFileStream.js'][12] = 0;
  10. _$jscoverage['streams/RollingFileStream.js'][13] = 0;
  11. _$jscoverage['streams/RollingFileStream.js'][15] = 0;
  12. _$jscoverage['streams/RollingFileStream.js'][16] = 0;
  13. _$jscoverage['streams/RollingFileStream.js'][17] = 0;
  14. _$jscoverage['streams/RollingFileStream.js'][21] = 0;
  15. _$jscoverage['streams/RollingFileStream.js'][23] = 0;
  16. _$jscoverage['streams/RollingFileStream.js'][25] = 0;
  17. _$jscoverage['streams/RollingFileStream.js'][27] = 0;
  18. _$jscoverage['streams/RollingFileStream.js'][28] = 0;
  19. _$jscoverage['streams/RollingFileStream.js'][29] = 0;
  20. _$jscoverage['streams/RollingFileStream.js'][32] = 0;
  21. _$jscoverage['streams/RollingFileStream.js'][33] = 0;
  22. _$jscoverage['streams/RollingFileStream.js'][36] = 0;
  23. _$jscoverage['streams/RollingFileStream.js'][37] = 0;
  24. _$jscoverage['streams/RollingFileStream.js'][40] = 0;
  25. _$jscoverage['streams/RollingFileStream.js'][41] = 0;
  26. _$jscoverage['streams/RollingFileStream.js'][44] = 0;
  27. _$jscoverage['streams/RollingFileStream.js'][45] = 0;
  28. _$jscoverage['streams/RollingFileStream.js'][46] = 0;
  29. _$jscoverage['streams/RollingFileStream.js'][47] = 0;
  30. _$jscoverage['streams/RollingFileStream.js'][48] = 0;
  31. _$jscoverage['streams/RollingFileStream.js'][50] = 0;
  32. _$jscoverage['streams/RollingFileStream.js'][54] = 0;
  33. _$jscoverage['streams/RollingFileStream.js'][55] = 0;
  34. _$jscoverage['streams/RollingFileStream.js'][56] = 0;
  35. _$jscoverage['streams/RollingFileStream.js'][57] = 0;
  36. _$jscoverage['streams/RollingFileStream.js'][60] = 0;
  37. _$jscoverage['streams/RollingFileStream.js'][62] = 0;
  38. _$jscoverage['streams/RollingFileStream.js'][63] = 0;
  39. _$jscoverage['streams/RollingFileStream.js'][66] = 0;
  40. _$jscoverage['streams/RollingFileStream.js'][70] = 0;
  41. _$jscoverage['streams/RollingFileStream.js'][72] = 0;
  42. _$jscoverage['streams/RollingFileStream.js'][73] = 0;
  43. _$jscoverage['streams/RollingFileStream.js'][74] = 0;
  44. _$jscoverage['streams/RollingFileStream.js'][82] = 0;
  45. _$jscoverage['streams/RollingFileStream.js'][83] = 0;
  46. }
  47. _$jscoverage['streams/RollingFileStream.js'][1]++;
  48. "use strict";
  49. _$jscoverage['streams/RollingFileStream.js'][2]++;
  50. var BaseRollingFileStream = require("./BaseRollingFileStream"), debug = require("../debug")("RollingFileStream"), util = require("util"), path = require("path"), fs = require("fs"), async = require("async");
  51. _$jscoverage['streams/RollingFileStream.js'][9]++;
  52. module.exports = RollingFileStream;
  53. _$jscoverage['streams/RollingFileStream.js'][11]++;
  54. function RollingFileStream(filename, size, backups, options) {
  55. _$jscoverage['streams/RollingFileStream.js'][12]++;
  56. this.size = size;
  57. _$jscoverage['streams/RollingFileStream.js'][13]++;
  58. this.backups = backups || 1;
  59. _$jscoverage['streams/RollingFileStream.js'][15]++;
  60. function throwErrorIfArgumentsAreNotValid() {
  61. _$jscoverage['streams/RollingFileStream.js'][16]++;
  62. if (! filename || ! size || size <= 0) {
  63. _$jscoverage['streams/RollingFileStream.js'][17]++;
  64. throw new Error("You must specify a filename and file size");
  65. }
  66. }
  67. _$jscoverage['streams/RollingFileStream.js'][21]++;
  68. throwErrorIfArgumentsAreNotValid();
  69. _$jscoverage['streams/RollingFileStream.js'][23]++;
  70. RollingFileStream.super_.call(this, filename, options);
  71. }
  72. _$jscoverage['streams/RollingFileStream.js'][25]++;
  73. util.inherits(RollingFileStream, BaseRollingFileStream);
  74. _$jscoverage['streams/RollingFileStream.js'][27]++;
  75. RollingFileStream.prototype.shouldRoll = (function () {
  76. _$jscoverage['streams/RollingFileStream.js'][28]++;
  77. debug("should roll with current size %d, and max size %d", this.currentSize, this.size);
  78. _$jscoverage['streams/RollingFileStream.js'][29]++;
  79. return this.currentSize >= this.size;
  80. });
  81. _$jscoverage['streams/RollingFileStream.js'][32]++;
  82. RollingFileStream.prototype.roll = (function (filename, callback) {
  83. _$jscoverage['streams/RollingFileStream.js'][33]++;
  84. var that = this, nameMatcher = new RegExp("^" + path.basename(filename));
  85. _$jscoverage['streams/RollingFileStream.js'][36]++;
  86. function justTheseFiles(item) {
  87. _$jscoverage['streams/RollingFileStream.js'][37]++;
  88. return nameMatcher.test(item);
  89. }
  90. _$jscoverage['streams/RollingFileStream.js'][40]++;
  91. function index(filename_) {
  92. _$jscoverage['streams/RollingFileStream.js'][41]++;
  93. return parseInt(filename_.substring((path.basename(filename) + ".").length), 10) || 0;
  94. }
  95. _$jscoverage['streams/RollingFileStream.js'][44]++;
  96. function byIndex(a, b) {
  97. _$jscoverage['streams/RollingFileStream.js'][45]++;
  98. if (index(a) > index(b)) {
  99. _$jscoverage['streams/RollingFileStream.js'][46]++;
  100. return 1;
  101. }
  102. else {
  103. _$jscoverage['streams/RollingFileStream.js'][47]++;
  104. if (index(a) < index(b)) {
  105. _$jscoverage['streams/RollingFileStream.js'][48]++;
  106. return -1;
  107. }
  108. else {
  109. _$jscoverage['streams/RollingFileStream.js'][50]++;
  110. return 0;
  111. }
  112. }
  113. }
  114. _$jscoverage['streams/RollingFileStream.js'][54]++;
  115. function increaseFileIndex(fileToRename, cb) {
  116. _$jscoverage['streams/RollingFileStream.js'][55]++;
  117. var idx = index(fileToRename);
  118. _$jscoverage['streams/RollingFileStream.js'][56]++;
  119. debug("Index of " + fileToRename + " is " + idx);
  120. _$jscoverage['streams/RollingFileStream.js'][57]++;
  121. if (idx < that.backups) {
  122. _$jscoverage['streams/RollingFileStream.js'][60]++;
  123. fs.unlink(filename + "." + (idx + 1), (function (err) {
  124. _$jscoverage['streams/RollingFileStream.js'][62]++;
  125. debug("Renaming " + fileToRename + " -> " + filename + "." + (idx + 1));
  126. _$jscoverage['streams/RollingFileStream.js'][63]++;
  127. fs.rename(path.join(path.dirname(filename), fileToRename), filename + "." + (idx + 1), cb);
  128. }));
  129. }
  130. else {
  131. _$jscoverage['streams/RollingFileStream.js'][66]++;
  132. cb();
  133. }
  134. }
  135. _$jscoverage['streams/RollingFileStream.js'][70]++;
  136. function renameTheFiles(cb) {
  137. _$jscoverage['streams/RollingFileStream.js'][72]++;
  138. debug("Renaming the old files");
  139. _$jscoverage['streams/RollingFileStream.js'][73]++;
  140. fs.readdir(path.dirname(filename), (function (err, files) {
  141. _$jscoverage['streams/RollingFileStream.js'][74]++;
  142. async.forEachSeries(files.filter(justTheseFiles).sort(byIndex).reverse(), increaseFileIndex, cb);
  143. }));
  144. }
  145. _$jscoverage['streams/RollingFileStream.js'][82]++;
  146. debug("Rolling, rolling, rolling");
  147. _$jscoverage['streams/RollingFileStream.js'][83]++;
  148. async.series([this.closeTheStream.bind(this), renameTheFiles, this.openTheStream.bind(this)], callback);
  149. });
  150. _$jscoverage['streams/RollingFileStream.js'].source = ["\"use strict\";","var BaseRollingFileStream = require('./BaseRollingFileStream')",", debug = require('../debug')('RollingFileStream')",", util = require('util')",", path = require('path')",", fs = require('fs')",", async = require('async');","","module.exports = RollingFileStream;","","function RollingFileStream (filename, size, backups, options) {"," this.size = size;"," this.backups = backups || 1;"," "," function throwErrorIfArgumentsAreNotValid() {"," if (!filename || !size || size &lt;= 0) {"," throw new Error(\"You must specify a filename and file size\");"," }"," }"," "," throwErrorIfArgumentsAreNotValid();"," "," RollingFileStream.super_.call(this, filename, options);","}","util.inherits(RollingFileStream, BaseRollingFileStream);","","RollingFileStream.prototype.shouldRoll = function() {"," debug(\"should roll with current size %d, and max size %d\", this.currentSize, this.size);"," return this.currentSize &gt;= this.size;","};","","RollingFileStream.prototype.roll = function(filename, callback) {"," var that = this,"," nameMatcher = new RegExp('^' + path.basename(filename));"," "," function justTheseFiles (item) {"," return nameMatcher.test(item);"," }"," "," function index(filename_) {"," return parseInt(filename_.substring((path.basename(filename) + '.').length), 10) || 0;"," }"," "," function byIndex(a, b) {"," if (index(a) &gt; index(b)) {"," return 1;"," } else if (index(a) &lt; index(b) ) {"," return -1;"," } else {"," return 0;"," }"," }",""," function increaseFileIndex (fileToRename, cb) {"," var idx = index(fileToRename);"," debug('Index of ' + fileToRename + ' is ' + idx);"," if (idx &lt; that.backups) {"," //on windows, you can get a EEXIST error if you rename a file to an existing file"," //so, we'll try to delete the file we're renaming to first"," fs.unlink(filename + '.' + (idx+1), function (err) {"," //ignore err: if we could not delete, it's most likely that it doesn't exist"," debug('Renaming ' + fileToRename + ' -&gt; ' + filename + '.' + (idx+1));"," fs.rename(path.join(path.dirname(filename), fileToRename), filename + '.' + (idx + 1), cb);"," });"," } else {"," cb();"," }"," }",""," function renameTheFiles(cb) {"," //roll the backups (rename file.n to file.n+1, where n &lt;= numBackups)"," debug(\"Renaming the old files\");"," fs.readdir(path.dirname(filename), function (err, files) {"," async.forEachSeries("," files.filter(justTheseFiles).sort(byIndex).reverse(),"," increaseFileIndex,"," cb"," );"," });"," }",""," debug(\"Rolling, rolling, rolling\");"," async.series(["," this.closeTheStream.bind(this),"," renameTheFiles,"," this.openTheStream.bind(this)"," ], callback);","","};"];