From d38834f39eb180f7016fb9b0e74192cd2854242c Mon Sep 17 00:00:00 2001 From: Inga Lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Wed, 21 Dec 2016 12:27:23 +0300 Subject: [PATCH] Switched from adm-zip to archiver --- BuildServer/lib/tasks/zip.js | 25 +++++++++---------------- BuildServer/package.json | 2 +- BuildServer/routes/release.js | 14 +++++++------- 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/BuildServer/lib/tasks/zip.js b/BuildServer/lib/tasks/zip.js index 746328a..0d13a17 100644 --- a/BuildServer/lib/tasks/zip.js +++ b/BuildServer/lib/tasks/zip.js @@ -2,30 +2,23 @@ const fs = require('fs'); const path = require('path'); -const Zip = require('adm-zip'); +const Archiver = require('archiver'); module.exports = (params, processor) => ({ process: () => { const sourceDirectoryPath = path.normalize(processor.context.exported + "/" + (params.directory || "")); const targetArchivePath = path.normalize(processor.context.release + "/" + params.archive); - const zip = new Zip(); processor.onInfo("Compressing '" + params.directory + "' to " + params.archive); - zip.addLocalFolder(sourceDirectoryPath); - zip.toBuffer((buffer) => { - fs.writeFile(targetArchivePath, buffer, (err) => { - if (err) { - processor.onError("Unable to write compressed data: " + err); - } else { - processor.onInfo("Compressed"); - } + const output = fs.createWriteStream(targetArchivePath); + const archive = new Archiver("zip"); - processor.done(); - }); - }, (error) => { - processor.onError("Unable to compress: " + error); - processor.done(); - }, () => { }, () => { }); + output.on("close", () => processor.done()); + + archive.on("error", (err) => processor.onError("Error while compressing: " + err)); + archive.pipe(output); + archive.directory(sourceDirectoryPath, false); + archive.finalize(); } }); diff --git a/BuildServer/package.json b/BuildServer/package.json index e037bb2..f801d5a 100644 --- a/BuildServer/package.json +++ b/BuildServer/package.json @@ -6,7 +6,7 @@ "start": "forever -c node app.js" }, "dependencies": { - "adm-zip": "0.4.7", + "archiver": "^1.3.0", "async": "~2.1.4", "body-parser": "^1.15.2", "cssnano": "^3.9.1", diff --git a/BuildServer/routes/release.js b/BuildServer/routes/release.js index 2830504..395c1cf 100644 --- a/BuildServer/routes/release.js +++ b/BuildServer/routes/release.js @@ -2,7 +2,7 @@ const path = require('path'); const fs = require('fs'); -const Zip = require('adm-zip'); +const Archiver = require('archiver'); const getReport = (releasePath, callback) => { const reportFile = releasePath + "report.json"; @@ -51,7 +51,6 @@ module.exports = (req, res, next) => { rev: req.params.rev }; - const zip = new Zip(); const releasePath = path.normalize(req.app.get('releasepath') + "/" + options.owner + "/" + options.reponame + "/" + options.branch + "/" + options.rev + "/"); getReport(releasePath, (err, report) => { @@ -59,10 +58,11 @@ module.exports = (req, res, next) => { return next(err); } - zip.addLocalFolder(releasePath); - zip.toBuffer((buffer) => { - res.attachment(options.reponame + '.' + getDatePart(report) + '.' + options.rev + '.zip', '.'); - res.send(buffer); - }, (error) => next(error), () => { }, () => { }); + const archive = new Archiver("zip"); + archive.on("error", next); + res.attachment(options.reponame + '.' + getDatePart(report) + '.' + options.rev + '.zip', '.'); + archive.pipe(res); + archive.directory(releasePath, false); + archive.finalize(); }); };