Skip to content
Snippets Groups Projects
Select Git revision
  • cdb26ad8e5915e71a4c9bdda46a1006cd29eb63e
  • master default protected
2 results

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
    	}