From 07391b6900a9aa0f160dd928bbb4fa945c13b76f Mon Sep 17 00:00:00 2001 From: jweg <jweg@informatik.uni-kiel.de> Date: Wed, 5 Jul 2017 17:26:23 +0200 Subject: [PATCH] work in progress: adding promises for building zip --- app.js | 116 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 59 insertions(+), 57 deletions(-) diff --git a/app.js b/app.js index 5a39083..2c89efe 100644 --- a/app.js +++ b/app.js @@ -66,10 +66,10 @@ if(typeof checkedFiles !== 'undefined' && checkedFiles.length > 0){ app.get('/download', function(req, res){ - +const promiseArray = [] const checkedFiles = req.query.checkedFiles.split(','); -var zip = new JSZip(); +const zip = new JSZip(); // create a file to stream archive data to. zip.file("README.txt", "text for README"); @@ -86,25 +86,28 @@ if (backendChecked){ const fileName = backendChecked; const downloadURL = downloadFiles[backendChecked]; - exec('git pull ' + ' && cd ' + fileName + ' && mvn compile war:war ', (error, stdout, stderr) => { +const backendPromise = new Promise((resolve, reject)=> { - addBackend(); - - var response = - 'There was an error during your build. ' + - 'Please contact "explorviz-developers-request@listserv.dfn.de" ' + - 'and add the following information: ' + error; + exec('git pull ' + ' && cd ' + fileName + ' && mvn compile war:war ', (error, stdout, stderr) => { - if (error) { - res.send(response); + //addBackend(); + + console.log('error in exec', error); + if (error) { + reject(error); + // res.send(response); beim promise.all return; } console.log(stdout); console.log(stderr); -}); //.then(addBackend()), würde auch gehen (npm packet: exec-then), aber hilft nicht dabei, zu wissen, wann zip gebaut werden darf - +resolve({fileName:"backend.war", path:"explorviz-ui-backend/target/explorviz-ui-backend-1.0-SNAPSHOT.war"}); + +}); +}) +promiseArray.push(backendPromise); +console.log('promiseArray:',promiseArray); } //--------------------------------------------------------------------------------frontend @@ -133,7 +136,7 @@ installAddons(); }; function installAddons(){ - +console.log('in installAddons()'); checkedPlugins = checkedFiles.filter(function(file){ return /\bexplorviz-frontend-plugin-\w*/.exec(file); }); @@ -188,14 +191,14 @@ console.log(stderr); }; // ------------------------------------------ember build -function addBackend(){ -// read a file as a stream and add it to a zip -console.log('addBackend()'); -const backendStream = fs.createReadStream("explorviz-ui-backend/target/explorviz-ui-backend-1.0-SNAPSHOT.war"); -zip.file("backend.war", backendStream); -backendFinished = true; -createZip(); -}; +// function addBackend(){ +// // read a file as a stream and add it to a zip +// console.log('addBackend()'); +// const backendStream = fs.createReadStream("explorviz-ui-backend/target/explorviz-ui-backend-1.0-SNAPSHOT.war"); +// zip.file("backend.war", backendStream); +// backendFinished = true; +// createZip(); +// }; function addFrontend(){ console.log("in addFrontend"); @@ -218,49 +221,48 @@ var stream = fsReaddir('./explorviz-ui-frontend/dist/') -function createZip(){ - console.log('frontendFinished', frontendFinished); - console.log('backendFinished', backendFinished); - //if(frontendFinished){ - // if (frontendChecked){ - // if (backendChecked){ - // if(frontendFinished && backendFinished){ - // console.log('both'); -//create zip and download it - zip.generateNodeStream({type:'nodebuffer',streamFiles:true}).pipe(fs.createWriteStream('explorviz-builds.zip')).on('finish', function () { - // JSZip generates a readable stream with a "end" event, - // but is piped here in a writable stream which emits a "finish" event. - console.log("explorviz-builds.zip written."); +Promise.all(promiseArray).then(files => { +//if (files.fileName === "backend.war"){ + +console.log('files.path' ,files.path); +console.log('files.fileName', files.fileName); + + backendStream = fs.createReadStream(files.path); +zip.file(files.fileName, backendStream); + + +zip.generateNodeStream({type:'nodebuffer',streamFiles:true}).pipe(fs.createWriteStream('explorviz-builds.zip')).on('finish', function () { + console.log('explorviz-builds.zip written.'); res.download('explorviz-builds.zip'); }); -//} + }).catch(function(error) {let response = + 'There was an error during your build. ' + + 'Please contact "explorviz-developers-request@listserv.dfn.de" ' + + 'and add the following information: ' + error; + res.send(response); +}) -}; -// } else if (frontendFinished) {//!backendChecked -// console.log('frontend only'); -// zip.generateNodeStream({type:'nodebuffer',streamFiles:true}).pipe(fs.createWriteStream('explorviz-builds.zip')).on('finish', function () { -// // JSZip generates a readable stream with a "end" event, -// // but is piped here in a writable stream which emits a "finish" event. -// console.log("explorviz-builds.zip frontend only written."); -// res.download('explorviz-builds.zip'); -// });} - -// } else if (backendChecked){//!frontendChecked -// if (backendFinished){ -// console.log('backend only'); -// //create zip and download it + + + +// function createZip(){ +// console.log('frontendFinished', frontendFinished); +// console.log('backendFinished', backendFinished); + +// //create zip and download it // zip.generateNodeStream({type:'nodebuffer',streamFiles:true}).pipe(fs.createWriteStream('explorviz-builds.zip')).on('finish', function () { // // JSZip generates a readable stream with a "end" event, // // but is piped here in a writable stream which emits a "finish" event. -// console.log("explorviz-builds.zip backend only written."); +// console.log("explorviz-builds.zip written."); // res.download('explorviz-builds.zip'); -// }); -// } -// } -// } +// }); + + +// }; + }); -app.listen(8080); -console.log("Downloader started on port 8080."); \ No newline at end of file +app.listen(3000); +console.log("Downloader started on port 3000."); \ No newline at end of file -- GitLab