Skip to content
Snippets Groups Projects
Commit 1dbd00a5 authored by Josefine Wegert's avatar Josefine Wegert
Browse files

current working directory in exec fixed

parent 272eefe9
No related branches found
No related tags found
No related merge requests found
...@@ -59,12 +59,13 @@ let clientCounter = 0; ...@@ -59,12 +59,13 @@ let clientCounter = 0;
app.get('/download', function(req, res, next){ app.get('/download', function(req, res, next){
const checkedFiles = req.query.checkedFiles.split(',');
let clientName; let clientName;
const zip = new JSZip(); const zip = new JSZip();
zip.file("README.txt", "text for README"); zip.file("README.txt", "text for README");
//holds promises for backend and/or frontend for synchronizing //holds promises for backend and/or frontend for synchronizing
const promiseArray = [] const promiseArray = []
const checkedFiles = req.query.checkedFiles.split(',');
if (clientCounter > 5){ if (clientCounter > 5){
...@@ -98,7 +99,7 @@ if (backendChecked){ ...@@ -98,7 +99,7 @@ if (backendChecked){
return backendFunctions.backendClean(clientName, fileName).then(function(){ return backendFunctions.backendClean(clientName, fileName).then(function(){
return backendFunctions.backendPull(clientName, fileName).then(function(){ return backendFunctions.backendPull(clientName, fileName).then(function(){
return backendFunctions.backendInstallAddons(checkedFiles,downloadFiles,clientName).then(function(){ return backendFunctions.backendInstallAddons(checkedFiles,downloadFiles,clientName).then(function(){
return backendFunctions.backendBuild(clientName, fileName) return backendFunctions.backendBuild(checkedFiles, clientName, fileName)
}) })
}) })
}) })
......
const express = require('express'); const express = require('express');
const exec = require('child_process').exec; 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){ if (error) {
return new Promise((resolve,reject)=>{ reject(error);
return;
}
exec('cp -R ' + fileName + ' ' + clientName + '/',(error,stdout,stderr)=>{ console.log(stdout);
console.log(stderr);
if (error) { resolve(fileName);
reject(error);
return;
}
console.log(stdout); })
console.log(stderr); })
resolve(fileName);
})
})
} }
//remove addons from former builds
function backendClean(clientName, fileName){ 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) { if (error) {
console.log('backendClean:', error); console.log('backendClean:', error);
reject(error); reject(error);
...@@ -48,11 +47,12 @@ function backendClean(clientName, fileName){ ...@@ -48,11 +47,12 @@ function backendClean(clientName, fileName){
} }
function backendPull(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) { if (error) {
console.log('backendPull:', error); console.log('backendPull:', error);
reject(error); reject(error);
...@@ -72,6 +72,8 @@ function backendPull(clientName, fileName){ ...@@ -72,6 +72,8 @@ function backendPull(clientName, fileName){
function backendInstallAddons(checkedFiles,downloadFiles,clientName){ function backendInstallAddons(checkedFiles,downloadFiles,clientName){
return new Promise((resolve, reject)=>{ return new Promise((resolve, reject)=>{
checkedPlugins = checkedFiles.filter(function(file){ checkedPlugins = checkedFiles.filter(function(file){
return /\bexplorviz-backend-plugin-\w*/.exec(file); return /\bexplorviz-backend-plugin-\w*/.exec(file);
}); });
...@@ -79,22 +81,24 @@ function backendInstallAddons(checkedFiles,downloadFiles,clientName){ ...@@ -79,22 +81,24 @@ function backendInstallAddons(checkedFiles,downloadFiles,clientName){
if(checkedPlugins.length !== 0 ){ if(checkedPlugins.length !== 0 ){
checkedPlugins.forEach((pluginName) => { 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/ ' +
const path= process.cwd()+'/'+ pluginName;
if (error) { 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/ ' +
console.log('backendInstallAddons:', error);
reject(error); if (error) {
return; console.log('backendInstallAddons:', error);
} reject(error);
return;
console.log(stdout); }
console.log(stderr);
console.log(stdout);
resolve(); console.log(stderr);
}); resolve();
}) });
})
} else { } else {
resolve(); resolve();
} }
...@@ -103,10 +107,16 @@ function backendInstallAddons(checkedFiles,downloadFiles,clientName){ ...@@ -103,10 +107,16 @@ function backendInstallAddons(checkedFiles,downloadFiles,clientName){
} }
function backendBuild(clientName, fileName){ function backendBuild(checkedFiles, clientName, fileName){
return new Promise((resolve,reject)=>{ 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) { if (error) {
console.log('backendBuild:', error); console.log('backendBuild:', error);
reject(error); reject(error);
...@@ -115,6 +125,7 @@ function backendBuild(clientName, fileName){ ...@@ -115,6 +125,7 @@ function backendBuild(clientName, fileName){
console.log(stdout); console.log(stdout);
console.log(stderr); console.log(stderr);
resolve({zipFileName:'backend.war', path: clientName + '/explorviz-ui-backend/target/explorviz-ui-backend-1.0-SNAPSHOT.war'}); resolve({zipFileName:'backend.war', path: clientName + '/explorviz-ui-backend/target/explorviz-ui-backend-1.0-SNAPSHOT.war'});
......
let express = require('express'); const express = require('express');
let exec = require('child_process').exec; const exec = require('child_process').exec;
function prepareClientFolder(clientName, fileName){ function prepareClientFolder(clientName, fileName){
return new Promise((resolve,reject)=>{ return new Promise((resolve,reject)=>{
exec('cp -R ' + fileName + '/ ' + clientName + '/',(error,stdout,stderr)=>{ exec('cp -R ' + fileName + '/ ' + clientName + '/',(error,stdout,stderr)=>{
if (error) { if (error) {
reject(error); reject(error);
return; return;
} }
console.log(stdout); console.log(stdout);
console.log(stderr); 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){ const path= process.cwd() + '/'+ clientName + '/' + fileName;
return new Promise((resolve, reject) => { 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) { console.log(stdout);
reject(error) console.log(stderr);
return;
}
console.log(stdout); resolve();
console.log(stderr); });
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) { console.log(stdout);
reject(error) console.log(stderr);
return;
}
console.log(stdout); resolve();
console.log(stderr); });
resolve(); })
}); }
})
}
function frontendInstallAddons(clientName, fileName, checkedFiles, downloadFiles){ function frontendInstallAddons(clientName, fileName, checkedFiles, downloadFiles){
let pluginsFinished=0;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
checkedPlugins = checkedFiles.filter(function(file){ checkedPlugins = checkedFiles.filter(function(file){
return /\bexplorviz-frontend-plugin-\w*/.exec(file); return /\bexplorviz-frontend-plugin-\w*/.exec(file);
}); });
if(checkedPlugins.length !== 0 ){ if(checkedPlugins.length !== 0 ){
checkedPlugins.forEach((pluginName) => { 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) => { 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) { if (error) {
reject(error); reject(error);
...@@ -82,46 +88,57 @@ exec('cp -R ' + fileName + '/ ' + clientName + '/',(error,stdout,stderr)=>{ ...@@ -82,46 +88,57 @@ exec('cp -R ' + fileName + '/ ' + clientName + '/',(error,stdout,stderr)=>{
console.log(stdout); console.log(stdout);
console.log(stderr); 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) { console.log(stdout);
reject(error); console.log(stderr);
return;
}
console.log(stdout); resolve({zipFileName:'frontend', path: clientName + '/explorviz-ui-frontend/dist/'});
console.log(stderr); });
resolve({zipFileName:'frontend', path: clientName + '/explorviz-ui-frontend/dist/'});
});
})
}) }
}
module.exports = { module.exports = {
prepareClientFolder, prepareClientFolder,
frontendClean, frontendClean,
frontendPull, frontendPull,
frontendInstallAddons, frontendInstallAddons,
frontendBuild frontendBuild
} }
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
"dependencies": { "dependencies": {
"body-parser": "^1.17.1", "body-parser": "^1.17.1",
"child_process": "^1.0.2", "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": "^4.15.2",
"express-handlebars": "^3.0.0", "express-handlebars": "^3.0.0",
"fs": "0.0.1-security", "fs": "0.0.1-security",
......
const express = require('express'); const express = require('express');
const fs = require('fs'); const fs = require('fs');
const fsReaddir = require('fs-readdir'); const fsReaddir = require('fs-readdir');
const JSZip = require('jszip'); const JSZip = require('jszip');
const clientFolder = require('./clientFolder.js'); const clientFolder = require('./clientFolder.js');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment