Select Git revision
zipFunctions.js
zipFunctions.js 1.95 KiB
const express = require('express');
const fs = require('fs');
const fsReaddir = require('fs-readdir');
const JSZip = require('jszip');
const clientFolder = require('./clientFolder.js');
function streamFilesToZip(promiseArray,zip, clientName){
let finishedArray=[];
return new Promise((resolve,reject)=> {
Promise.all(promiseArray).then(files => {
files.forEach(file => {
if (file.zipFileName === 'backend.war'){
fs.readFileAsync = function(filePath){
return new Promise(function (resolve, reject) {
fs.readFile(filePath, function(err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
function addBackendToZip(data){
return new Promise(function(resolve,reject){
zip.file(file.zipFileName, data);
resolve();
})
}
backendContent = fs.readFileAsync(file.path);
backendContent.then(function(data){
addBackendToZip(data).then(function(){
finishedArray.push('backend finished');
if(finishedArray.length === promiseArray.length){
finishedArray=[];
clientFolder.removeClientFolder(clientName);
resolve(zip);
}
})
})
}
if(file.zipFileName === 'frontend'){
const frontendStream = fsReaddir(file.path)
.on('error', function(err) {
console.log('error:', err);
}).on('data', function(data){
for (let i=0; i<data.length; i++) {
const frontendReadStream = fs.createReadStream(data[i]);
zip.file(data[i], frontendReadStream);
}
}).on('finish', function(){
finishedArray.push('frontend finished');
if(finishedArray.length === promiseArray.length){
finishedArray=[];
clientFolder.removeClientFolder(clientName);
resolve(zip);
}
})
}
})
})
})
}
module.exports= {
streamFilesToZip
}