From 1dbd00a58e419567d0bb95a465f8ce2cb18c60ef Mon Sep 17 00:00:00 2001 From: jweg <jweg@informatik.uni-kiel.de> Date: Fri, 28 Jul 2017 13:05:34 +0200 Subject: [PATCH] current working directory in exec fixed --- app.js | 5 +- backendFunctions.js | 99 +++++++++++++----------- frontendFunctions.js | 177 ++++++++++++++++++++++++------------------- package.json | 2 + zipFunctions.js | 10 +-- 5 files changed, 162 insertions(+), 131 deletions(-) diff --git a/app.js b/app.js index 1d30a6d..c334e54 100644 --- a/app.js +++ b/app.js @@ -59,12 +59,13 @@ let clientCounter = 0; app.get('/download', function(req, res, next){ + const checkedFiles = req.query.checkedFiles.split(','); let clientName; const zip = new JSZip(); zip.file("README.txt", "text for README"); //holds promises for backend and/or frontend for synchronizing const promiseArray = [] - const checkedFiles = req.query.checkedFiles.split(','); + if (clientCounter > 5){ @@ -98,7 +99,7 @@ if (backendChecked){ return backendFunctions.backendClean(clientName, fileName).then(function(){ return backendFunctions.backendPull(clientName, fileName).then(function(){ return backendFunctions.backendInstallAddons(checkedFiles,downloadFiles,clientName).then(function(){ - return backendFunctions.backendBuild(clientName, fileName) + return backendFunctions.backendBuild(checkedFiles, clientName, fileName) }) }) }) diff --git a/backendFunctions.js b/backendFunctions.js index c5eed74..4cc6c31 100644 --- a/backendFunctions.js +++ b/backendFunctions.js @@ -1,37 +1,36 @@ -const express = require('express'); -const exec = require('child_process').exec; - + const express = require('express'); + const exec = require('child_process').exec; + + function prepareClientFolder(clientName, fileName){ + return new Promise((resolve,reject)=>{ + exec('cp -R ' + fileName + ' ' + clientName + '/',(error,stdout,stderr)=>{ -function prepareClientFolder(clientName, fileName){ - return new Promise((resolve,reject)=>{ + if (error) { + reject(error); + return; + } - exec('cp -R ' + fileName + ' ' + clientName + '/',(error,stdout,stderr)=>{ + console.log(stdout); + console.log(stderr); - if (error) { - reject(error); - return; - } + resolve(fileName); - console.log(stdout); - console.log(stderr); - - resolve(fileName); - - }) - }) + }) + }) -} - + } +//remove addons from former builds function backendClean(clientName, fileName){ - - return new Promise((resolve,reject)=>{ - exec('cd ' + clientName + '/explorviz-ui-backend/plugins/net/explorviz/ && rm -rf plugins/*', (error, stdout,stderr)=>{ + return new Promise((resolve,reject)=>{ + const path= process.cwd()+'/' + clientName + '/explorviz-ui-backend/plugins/net/explorviz/'; + exec('rm -rf plugins/*',{cwd:path}, (error, stdout,stderr)=>{ + if (error) { console.log('backendClean:', error); reject(error); @@ -48,11 +47,12 @@ function backendClean(clientName, fileName){ } function backendPull(clientName, fileName){ - - return new Promise((resolve, reject)=> { - exec('cd ' + clientName + '/' + fileName + ' && git pull ', (error, stdout, stderr) => { + return new Promise((resolve, reject)=> { + const path= process.cwd()+'/'+clientName + '/'+ fileName; + exec('git pull ',{cwd:path} ,(error, stdout, stderr) => { + if (error) { console.log('backendPull:', error); reject(error); @@ -72,6 +72,8 @@ function backendPull(clientName, fileName){ function backendInstallAddons(checkedFiles,downloadFiles,clientName){ return new Promise((resolve, reject)=>{ + + checkedPlugins = checkedFiles.filter(function(file){ return /\bexplorviz-backend-plugin-\w*/.exec(file); }); @@ -79,22 +81,24 @@ function backendInstallAddons(checkedFiles,downloadFiles,clientName){ if(checkedPlugins.length !== 0 ){ checkedPlugins.forEach((pluginName) => { - exec('cd '+ pluginName + ' && git pull ' + ' && rsync -av . ' + ' ../' + clientName +'/explorviz-ui-backend/plugins/net/explorviz/plugins/ ' + ' --exclude .git', (error, stdout, stderr) => { //'cd explorviz-ui-backend/plugins/net/explorviz/plugins/ ' + - - if (error) { - console.log('backendInstallAddons:', error); - reject(error); - return; - } - - console.log(stdout); - console.log(stderr); - - resolve(); - - }); - - }) + + const path= process.cwd()+'/'+ pluginName; + exec('git pull ' + ' && rsync -av . ' + ' ../' + clientName +'/explorviz-ui-backend/plugins/net/explorviz/plugins/ ' + ' --exclude .git',{cwd:path}, (error, stdout, stderr) => { //'cd explorviz-ui-backend/plugins/net/explorviz/plugins/ ' + + + if (error) { + console.log('backendInstallAddons:', error); + reject(error); + return; + } + + console.log(stdout); + console.log(stderr); + + resolve(); + + }); + + }) } else { resolve(); } @@ -103,10 +107,16 @@ function backendInstallAddons(checkedFiles,downloadFiles,clientName){ } -function backendBuild(clientName, fileName){ - +function backendBuild(checkedFiles, clientName, fileName){ + return new Promise((resolve,reject)=>{ - exec('cd '+ clientName + '/' + fileName + ' && mvn compile war:war', (error,stdout,stderr)=> { + + + + const path= process.cwd()+'/'+clientName + '/' + fileName; + exec('mvn compile war:war',{cwd:path}, (error,stdout,stderr)=> { + + if (error) { console.log('backendBuild:', error); reject(error); @@ -115,6 +125,7 @@ function backendBuild(clientName, fileName){ console.log(stdout); console.log(stderr); + resolve({zipFileName:'backend.war', path: clientName + '/explorviz-ui-backend/target/explorviz-ui-backend-1.0-SNAPSHOT.war'}); diff --git a/frontendFunctions.js b/frontendFunctions.js index c27b5fa..2de7d85 100644 --- a/frontendFunctions.js +++ b/frontendFunctions.js @@ -1,78 +1,84 @@ - let express = require('express'); - let exec = require('child_process').exec; + const express = require('express'); + const exec = require('child_process').exec; - -function prepareClientFolder(clientName, fileName){ -return new Promise((resolve,reject)=>{ + function prepareClientFolder(clientName, fileName){ + return new Promise((resolve,reject)=>{ -exec('cp -R ' + fileName + '/ ' + clientName + '/',(error,stdout,stderr)=>{ + exec('cp -R ' + fileName + '/ ' + clientName + '/',(error,stdout,stderr)=>{ - if (error) { - reject(error); - return; - } + if (error) { + reject(error); + return; + } - console.log(stdout); - console.log(stderr); + console.log(stdout); + console.log(stderr); - resolve(fileName); + resolve(fileName); -}) -}) + }) + }) -} + } + +//remove addons from former builds +function frontendClean(clientName, fileName){ + return new Promise((resolve, reject) => { - function frontendClean(clientName, fileName){ - return new Promise((resolve, reject) => { + const path= process.cwd() + '/'+ clientName + '/' + fileName; + exec('git checkout package.json && npm prune ', {cwd:path}, (error, stdout, stderr) => { - exec('cd ' + clientName + '/' + fileName + ' && git checkout package.json && npm prune ', (error, stdout, stderr) => { + if (error) { + reject(error) + return; + } - if (error) { - reject(error) - return; - } + console.log(stdout); + console.log(stderr); - console.log(stdout); - console.log(stderr); - resolve(); - }); - }) + resolve(); + }); + }) + +} - } +function frontendPull(clientName, fileName){ - function frontendPull(clientName, fileName){ + return new Promise((resolve, reject) => { - return new Promise((resolve, reject) => { + const path= process.cwd() + '/'+ clientName + '/' + fileName; + exec('git pull ', {cwd:path}, (error, stdout, stderr) => { - exec('cd ' + clientName + '/' + fileName +' && git pull ', (error, stdout, stderr) => { + if (error) { + reject(error) + return; + } - if (error) { - reject(error) - return; - } + console.log(stdout); + console.log(stderr); - console.log(stdout); - console.log(stderr); - resolve(); - }); - }) - } + resolve(); + }); + }) +} - function frontendInstallAddons(clientName, fileName, checkedFiles, downloadFiles){ - - return new Promise((resolve, reject) => { +function frontendInstallAddons(clientName, fileName, checkedFiles, downloadFiles){ + let pluginsFinished=0; + return new Promise((resolve, reject) => { - checkedPlugins = checkedFiles.filter(function(file){ - return /\bexplorviz-frontend-plugin-\w*/.exec(file); - }); + checkedPlugins = checkedFiles.filter(function(file){ + return /\bexplorviz-frontend-plugin-\w*/.exec(file); + }); - if(checkedPlugins.length !== 0 ){ - checkedPlugins.forEach((pluginName) => { - //TODO now addon is listed under dependencies-section in package.json - exec('cd ' + clientName + '/' + fileName + ' && ember install ' + downloadFiles[pluginName] + ' --save', (error, stdout, stderr) => { + if(checkedPlugins.length !== 0 ){ + checkedPlugins.forEach((pluginName) => { + + const path= process.cwd() + '/'+ clientName + '/' + fileName; + //--save: addon is listed under dependencies-section in package.json + exec('ember install ' + downloadFiles[pluginName] + ' --save', {cwd:path}, (error, stdout, stderr) => { if (error) { reject(error); @@ -82,46 +88,57 @@ exec('cp -R ' + fileName + '/ ' + clientName + '/',(error,stdout,stderr)=>{ console.log(stdout); console.log(stderr); - resolve(); + pluginsFinished = pluginsFinished +1; + + console.log('checkedPlugins.length: ',checkedPlugins.length); + console.log('pluginsFinished: ', pluginsFinished); + if (checkedPlugins.length == pluginsFinished){ + + resolve(); + } }); }) - //If no plugins were checked by the user, the downloader skips this step by resolving immediately. - } else { - resolve(); - } - }) - } - function frontendBuild(clientName, fileName){ + } else { + + //If no plugins were checked by the user, the downloader skips this step by resolving immediately. + resolve(); + } - return new Promise((resolve,reject)=> { + }) +} + +function frontendBuild(clientName, fileName){ + + return new Promise((resolve,reject)=> { + + const path= process.cwd() + '/'+ clientName + '/' + fileName; + exec('ember build --environment=production', {cwd:path}, (error, stdout, stderr) => { - exec('cd ' + clientName + '/' + fileName + ' && ember build --environment=production', (error, stdout, stderr) => { + if (error) { + reject(error); + return; + } - if (error) { - reject(error); - return; - } + console.log(stdout); + console.log(stderr); - console.log(stdout); - console.log(stderr); + resolve({zipFileName:'frontend', path: clientName + '/explorviz-ui-frontend/dist/'}); + }); - resolve({zipFileName:'frontend', path: clientName + '/explorviz-ui-frontend/dist/'}); - }); + }) - }) - - } +} - module.exports = { - prepareClientFolder, - frontendClean, - frontendPull, - frontendInstallAddons, - frontendBuild - } +module.exports = { + prepareClientFolder, + frontendClean, + frontendPull, + frontendInstallAddons, + frontendBuild +} diff --git a/package.json b/package.json index 8158390..ae6abbd 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,8 @@ "dependencies": { "body-parser": "^1.17.1", "child_process": "^1.0.2", + "ember-cli-test-plugin": "git+https://github.com/ExplorViz/explorviz-frontend-plugin-example.git", + "explorviz-frontend-plugin-colorpicker": "git+https://github.com/ExplorViz/explorviz-frontend-plugin-colorpicker.git", "express": "^4.15.2", "express-handlebars": "^3.0.0", "fs": "0.0.1-security", diff --git a/zipFunctions.js b/zipFunctions.js index afd8521..99ca9ea 100644 --- a/zipFunctions.js +++ b/zipFunctions.js @@ -1,9 +1,9 @@ - const express = require('express'); - const fs = require('fs'); - const fsReaddir = require('fs-readdir'); - const JSZip = require('jszip'); +const express = require('express'); +const fs = require('fs'); +const fsReaddir = require('fs-readdir'); +const JSZip = require('jszip'); - const clientFolder = require('./clientFolder.js'); +const clientFolder = require('./clientFolder.js'); -- GitLab