diff --git a/BuildServer/lib/report-processor.js b/BuildServer/lib/report-processor.js index 180432d..1608716 100644 --- a/BuildServer/lib/report-processor.js +++ b/BuildServer/lib/report-processor.js @@ -3,27 +3,42 @@ const path = require("path"); const fs = require("fs"); const glob = require("glob"); +const streamBuffers = require("stream-buffers"); const _ = require("underscore"); -const writeReport = (releaseDir, err, result, callback) => fs.writeFile(path.join(releaseDir, "report.json"), JSON.stringify({ - "date": Date.now(), - err, - result -}), callback); +const writeReport = (releaseDir, err, result, callback) => { + const readable = new streamBuffers.ReadableStreamBuffer(); -const readReport = (releaseDir, callback) => fs.readFile(path.join(releaseDir, "report.json"), (err, dataBuffer) => { - if (err) { - return callback(err); - } + readable + .pipe(fs.createWriteStream(path.join(releaseDir, "report.json"))) + .on("error", callback) + .on("finish", callback); - const data = dataBuffer.toString(); + readable.put(JSON.stringify({ + "date": Date.now(), + err, + result + })); + readable.stop(); +}; + +const readReport = (releaseDir, callback) => { + const writable = new streamBuffers.WritableStreamBuffer(); + const readStream = fs.createReadStream(path.join(releaseDir, "report.json")); + + readStream + .pipe(writable) + .on("error", callback) + .on("finish", () => { + const data = writable.getContentsAsString(); - if (!data) { - return callback("ReportFileNotFound"); - } + if (!data) { + return callback("ReportFileNotFound"); + } - return callback(null, JSON.parse(data)); -}); + return callback(null, JSON.parse(data)); + }); +}; exports.writeReport = writeReport; diff --git a/BuildServer/package.json b/BuildServer/package.json index deab238..4ceea71 100644 --- a/BuildServer/package.json +++ b/BuildServer/package.json @@ -26,6 +26,7 @@ "recursive-tree-copy": "0.0.1", "serve-favicon": "^2.3.2", "serve-static": "^1.11.1", + "stream-buffers": "^3.0.1", "uglify-js": "^2.7.5", "underscore": "^1.8.3" }, @@ -38,19 +39,61 @@ }, "extends": "eslint:all", "rules": { - "quotes": ["warn", "double"], + "quotes": [ + "warn", + "double" + ], "require-jsdoc": "off", - "func-names": ["warn", "never"], - "max-len": ["warn", { "code": 140 }], - "operator-linebreak": ["warn", "before"], - "padded-blocks": ["warn", "never"], - "dot-notation": ["warn", { "allowPattern": "^[a-z]+(_[a-z]+)+$" }], - "linebreak-style": ["warn", "windows"], + "func-names": [ + "warn", + "never" + ], + "max-len": [ + "warn", + { + "code": 140 + } + ], + "operator-linebreak": [ + "warn", + "before" + ], + "padded-blocks": [ + "warn", + "never" + ], + "dot-notation": [ + "warn", + { + "allowPattern": "^[a-z]+(_[a-z]+)+$" + } + ], + "linebreak-style": [ + "warn", + "windows" + ], "no-console": "off", - "dot-location": ["warn", "property"], - "object-curly-spacing": ["warn", "always"], - "one-var": ["warn", { "initialized": "never" }], - "no-extra-parens": ["warn", "all", { "nestedBinaryExpressions": false }] + "dot-location": [ + "warn", + "property" + ], + "object-curly-spacing": [ + "warn", + "always" + ], + "one-var": [ + "warn", + { + "initialized": "never" + } + ], + "no-extra-parens": [ + "warn", + "all", + { + "nestedBinaryExpressions": false + } + ] } } }