From df43aef357a2f7b4d382838491184fd18e4cbd50 Mon Sep 17 00:00:00 2001
From: jweg <jweg@informatik.uni-kiel.de>
Date: Mon, 10 Jul 2017 17:28:50 +0200
Subject: [PATCH] writes backend without addons to zip, backend and frontend
 together still not working

---
 app.js | 163 ++++++++++++++++++++++++++++++++-------------------------
 1 file changed, 91 insertions(+), 72 deletions(-)

diff --git a/app.js b/app.js
index 1c532cf..485a3e4 100644
--- a/app.js
+++ b/app.js
@@ -17,12 +17,12 @@
 	const downloadFiles = require('./downloadFiles.json');
 	const downloadNames = Object.keys(downloadFiles);
 
-  var app = express();
+	var app = express();
 
-  app.use(bodyParser.urlencoded({
-    extended: true
-  }));
-  app.use(bodyParser.json());
+	app.use(bodyParser.urlencoded({
+		extended: true
+	}));
+	app.use(bodyParser.json());
 
 	//set handlebars as view engine
 	app.engine('.hbs', exphbs({extname: '.hbs'}));
@@ -87,6 +87,7 @@
 
 
 		function backendClean(){
+			console.log('in backendClean');
 			return new Promise((resolve,reject)=>{
 				exec('cd explorviz-ui-backend/plugins/net/explorviz/ && rm -rf plugins/*', (error, stdout,stderr)=>{
 					if (error) {
@@ -104,7 +105,7 @@
 		}
 
 		function backendPull(){
-
+			console.log('in backendPull');
 			return new Promise((resolve, reject)=> {
 
 				exec('cd ' + fileName + ' git pull ', (error, stdout, stderr) => {
@@ -124,7 +125,9 @@
 			
 		}
 
+
 		function backendInstallAddons(){
+			console.log('in backendInstallAddons');
 			return new Promise((resolve, reject)=>{
 				checkedPlugins = checkedFiles.filter(function(file){
 					return /\bexplorviz-backend-plugin-\w*/.exec(file);
@@ -133,7 +136,7 @@
 				if(checkedPlugins.length !== 0 ){
 
 					checkedPlugins.forEach((pluginName) => {
-						exec('git clone ' + downloadFiles[pluginName] + ' && cp -R '+ pluginName + '/ '+' explorviz-ui-backend/plugins/net/explorviz/plugins/', (error, stdout, stderr) => { //'cd explorviz-ui-backend/plugins/net/explorviz/plugins/ ' + 
+						exec('git clone ' + downloadFiles[pluginName] + ' && cd '+ pluginName +  ' && cp -R ' + ' . '+' ../explorviz-ui-backend/plugins/net/explorviz/plugins/ ', (error, stdout, stderr) => { //'cd explorviz-ui-backend/plugins/net/explorviz/plugins/ ' + 
 							
 							if (error) {
 								reject(error);
@@ -158,6 +161,7 @@
 		}
 
 		function backendBuild(){
+			console.log('in backendBuild');
 			return new Promise((resolve,reject)=>{
 				exec('cd '+ fileName + ' && mvn compile war:war ', (error,stdout,stderr)=> {
 					if (error) {
@@ -188,6 +192,7 @@
 
 		}
 		promiseArray.push(backendAll());
+		console.log('promiseArray:', promiseArray);
 		finalizeZip();
 		
 	} 
@@ -274,17 +279,17 @@
 
 
 			})
-      console.log('resolve build:', resolve);
-    }
+			console.log('resolve build:', resolve);
+		}
 
-    function frontendAll() {
+		function frontendAll() {
 
-     return frontendPull().then(function(){
-      return frontendInstallAddons().then(function(){
-       return frontendBuild()
-     })
-    })
-   }
+			return frontendPull().then(function(){
+				return frontendInstallAddons().then(function(){
+					return frontendBuild()
+				})
+			})
+		}
 //frontend was selected and the next step (streaming to zip) has to wait until the frontend is built
 promiseArray.push(frontendAll());
 finalizeZip();
@@ -310,59 +315,73 @@ function streamFilesToZip(){
 	console.log('in streamFilesToZip');
 
 	return new Promise((resolve,reject)=> {
-		
+		console.log('promiseArray:', promiseArray);
 		Promise.all(promiseArray).then(files => {
 			console.log('in Promise.all');
 			let finishedArray=[];
 			files.forEach(file => {
 				if (file.zipFileName === 'backend.war'){
-// console.log('backendStream:');
-//              backendStream = fs.createReadStream(file.path);
-//              console.log('zip.file:');
-//             zip.file(file.zipFileName, backendStream);
-//             console.log('backend done:');
-// finishedArray.push('backend done');
-const backendStream = fs.readFileSync(file.path, "base64", function(error, data){
-  if(error){
-    console.log('error:', error)
-  }
-});
-          //console.log('backendStream:', backendStream);
-          const backendReadStream = fs.createReadStream(backendStream);
-          
-          zip.file(file.zipFileName, backendReadStream);
-          finishedArray.push('backend finished');
-          if(finishedArray.length === files.length){
-           resolve();
-         }
-         
-
-
-         
-       }
-       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]);
-          console.log('data[i]:', data[i]);
-          zip.file(data[i], frontendReadStream);
-        }
-
-      }).on('finish', function(){
-       finishedArray.push('frontend finished');
-       if(finishedArray.length === files.length){
-        resolve();
-      }
-    })
-
-    }
-
-    
-
-  })
+					console.log('in 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(){
+							resolve(finishedArray.push('backend finished'));
+						})
+
+					})
+
+					if(finishedArray.length === files.length){
+						resolve();
+					}
+
+
+
+				}
+				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 === files.length){
+							resolve();
+						}
+					})
+					console.log('frontendStream:', frontendStream);
+
+				}
+
+
+
+			})
 
 		})
 
@@ -372,16 +391,16 @@ const backendStream = fs.readFileSync(file.path, "base64", function(error, data)
 
 function createZip(){
 	console.log('in createZip');
-
+	
 	return new Promise((resolve,reject) => {
 		zip.generateNodeStream({type:'nodebuffer',streamFiles:true}).pipe(fs.createWriteStream('explorviz-builds.zip')).on('error', function(error){
-      console.log('error in createZip:', error);
-    }).on('finish', function () {
-     console.log('explorviz-builds.zip written.');
-     res.download('explorviz-builds.zip');
-   }); 
-    
-  })
+			console.log('error in createZip:', error);
+		}).on('finish', function () {
+			console.log('explorviz-builds.zip written.');
+			res.download('explorviz-builds.zip');
+		}); 
+
+	})
 
 	
 }
-- 
GitLab