diff --git a/app.js b/app.js index f03e3d503f32f95ce8c44e27d2f5a2abc51adb65..5a39083f172fc9308ac0b6c63b49222c2eda2f45 100644 --- a/app.js +++ b/app.js @@ -10,8 +10,9 @@ var Zip = require('node-zip'); var JSZip = require('jszip'); var exphbs = require('express-handlebars'); -var logger = require('morgan'); +//initializer +var nanit = require('nanit'); //load names of available download files var downloadFiles = require('./downloadFiles.json'); var downloadNames = Object.keys(downloadFiles); @@ -22,16 +23,31 @@ app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); -app.use(logger("short")); - //set handlebars as view engine app.engine('.hbs', exphbs({extname: '.hbs'})); app.set('view engine', '.hbs'); +//initialize the git repos +//TODO error handling is not working properly, error returned is not in var error, but in req + req and res are undefined! +// nanit.initialize(downloadFiles, function(req,res,err){ +// // console.log('err in nanit.initialize:', err); +// // console.log('req in nanit.initialize:', req); +// // console.log('res in nanit.initialize:', res); + +// var response = +// 'There was an error during cloning the git repositories. ' + +// 'Please contact "explorviz-developers-request@listserv.dfn.de" ' + +// 'and add the following information: ' + req; +// if(err){ +// console.log('nanit.initialize error'); +// res.send(response); +// return; +// }; -//routes +// }); +//routes app.get('/', function(req, res){ res.render('home', {downloadFiles: downloadNames}); }); @@ -50,7 +66,7 @@ if(typeof checkedFiles !== 'undefined' && checkedFiles.length > 0){ app.get('/download', function(req, res){ -var promises=[]; + const checkedFiles = req.query.checkedFiles.split(','); var zip = new JSZip(); @@ -70,10 +86,9 @@ if (backendChecked){ const fileName = backendChecked; const downloadURL = downloadFiles[backendChecked]; - //exec('git clone ' + downloadURL + ' ' + fileName + ' && cd ' + fileName + ' && mvn compile war:war ', (error, stdout, stderr) => { exec('git pull ' + ' && cd ' + fileName + ' && mvn compile war:war ', (error, stdout, stderr) => { - promises.push(new Promise(addBackend())); + addBackend(); var response = 'There was an error during your build. ' + @@ -101,7 +116,6 @@ if (frontendChecked){ const fileName = frontendChecked; const downloadURL = downloadFiles[frontendChecked]; -//exec('git clone ' + downloadURL + ' ' + fileName + ' && cd '+ fileName + ' && npm install', (error, stdout, stderr) => { exec('git pull ', (error, stdout, stderr) => { installAddons(); var response = @@ -153,8 +167,8 @@ function buildFrontend(){ exec('cd explorviz-ui-frontend && ember build --environment=production', (error, stdout, stderr) => { //exec('cd explorviz-ui-frontend', (error, stdout, stderr) => { -var frontendP = new Promise(addFrontend(resolve,reject)); - promises.push(frontendP); +addFrontend(); + var response = 'There was an error during your build. ' + @@ -183,7 +197,7 @@ backendFinished = true; createZip(); }; -function addFrontend(resolve,reject){ +function addFrontend(){ console.log("in addFrontend"); var stream = fsReaddir('./explorviz-ui-frontend/dist/') @@ -198,19 +212,13 @@ var stream = fsReaddir('./explorviz-ui-frontend/dist/') }).on('finish',function(){ frontendFinished = true; - //return printFinished(); + createZip(); }); -console.log('stream',stream); }; -function printFinished(resolve,reject){ -console.log('frontendFinished'); -} -console.log('promises' ,promises); -console.log('promises.length', promises.length); -if (promises.length){ -Promise.all(promises).then(function createZip(){ + +function createZip(){ console.log('frontendFinished', frontendFinished); console.log('backendFinished', backendFinished); //if(frontendFinished){ @@ -227,8 +235,7 @@ Promise.all(promises).then(function createZip(){ }); //} -}); -} +}; // } else if (frontendFinished) {//!backendChecked // console.log('frontend only'); // zip.generateNodeStream({type:'nodebuffer',streamFiles:true}).pipe(fs.createWriteStream('explorviz-builds.zip')).on('finish', function () { diff --git a/initializers/gitRepos.js b/initializers/gitRepos.js new file mode 100644 index 0000000000000000000000000000000000000000..25380fca30b47c72ba7cf7ed8d8b860b9ecad06e --- /dev/null +++ b/initializers/gitRepos.js @@ -0,0 +1,37 @@ +var express = require('express'); +var exec = require('child_process').exec; + + +//Clone the git repos initially for performance. +//TODO error handling is not working properly, error returned is not in var error, but in req +function initGitRepos(downloadFiles, next){ + const backendName= 'explorviz-ui-backend'; + const downloadBackend= downloadFiles[backendName]; +exec('git clone ' + downloadBackend, (error, stdout, stderr) => { + + if (error) { + console.log('initGitRepos: backendFailed'); + return next(error); + } + + console.log(stdout); + console.log(stderr); +}); + + const frontendName='explorviz-ui-frontend'; + const downloadFrontend= downloadFiles[frontendName]; + exec('git clone ' + downloadFrontend + ' ' + frontendName + ' && cd '+ frontendName + ' && npm install', (error, stdout, stderr) => { + + if (error) { + console.log('initGitRepos: frontendFailed'); + return next(error); + } + + console.log(stdout); + console.log(stderr); +}); + + +next(); +}; +module.exports = initGitRepos; \ No newline at end of file diff --git a/package.json b/package.json index f9f2c8cc0aa451bb0129bc4ca33fbd047c275c9f..eb9afe759b697abac8e465622e016ec0ba5276aa 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "fs": "0.0.1-security", "fs-readdir": "0.0.3", "jszip": "^3.1.3", - "morgan": "^1.8.2", + "nanit": "^0.3.1", "node-zip": "^1.1.1", "path": "^0.12.7" },