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

work in progress: part of downloader for backend

parent 027d1598
No related branches found
No related tags found
No related merge requests found
......@@ -31,22 +31,22 @@
//initialize the git repos
//TODO error handling is not working properly, error returned is not in let error, but in req + req and res are undefined!
//TODO add spinner for telling user to wait until initialization is done
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);
let 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;
};
});
// 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);
// let 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
app.get('/', function(req, res){
......@@ -67,6 +67,7 @@
app.get('/download', function(req, res){
//holds promises for backend and/or frontend
const promiseArray = []
const checkedFiles = req.query.checkedFiles.split(',');
......@@ -84,9 +85,29 @@
const fileName = backendChecked;
const downloadURL = downloadFiles[backendChecked];
const backendPromise = new Promise((resolve, reject)=> {
exec('git pull ' + ' && cd ' + fileName + ' && mvn compile war:war ', (error, stdout, stderr) => {
function backendClean(){
return new Promise((resolve,reject)=>{
exec('cd explorviz-ui-backend/plugins/net/explorviz/plugins/ && rm *', (error, stdout,stderr)=>{
if (error) {
reject(error);
return;
}
console.log(stdout);
console.log(stderr);
resolve();
})
})
}
function backendPull(){
return new Promise((resolve, reject)=> {
exec('cd ' + fileName + 'git pull ', (error, stdout, stderr) => {
if (error) {
reject(error);
......@@ -96,12 +117,80 @@
console.log(stdout);
console.log(stderr);
resolve({zipFileName:'backend.war', path:'explorviz-ui-backend/target/explorviz-ui-backend-1.0-SNAPSHOT.war'});
resolve();
});
})
}
function backendInstallAddons(){
return new Promise((resolve, reject)=>{
checkedPlugins = checkedFiles.filter(function(file){
return /\bexplorviz-backend-plugin-\w*/.exec(file);
});
if(checkedPlugins.length !== 0 ){
checkedPlugins.forEach((pluginName) => {
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);
return;
}
console.log(stdout);
console.log(stderr);
resolve();
});
})
} else {
resolve();
}
})
}
function backendBuild(){
return new Promise((resolve,reject)=>{
exec('cd '+ fileName + ' && mvn compile war:war ', (error,stdout,stderr)=> {
if (error) {
reject(error);
return;
}
console.log(stdout);
console.log(stderr);
resolve({zipFileName:'backend.war', path:'explorviz-ui-backend/target/explorviz-ui-backend-1.0-SNAPSHOT.war'});
})
})
}
function backendAll(){
return backendClean().then(function(){
return backendPull().then(function(){
return backendInstallAddons().then(function(){
return backendBuild()
})
})
})
promiseArray.push(backendPromise);
}
promiseArray.push(backendAll());
finalizeZip();
}
frontendChecked = checkedFiles.find(function(file){
......@@ -116,7 +205,8 @@
return new Promise((resolve, reject) => {
console.log('in frontendPull()');
exec('cd ' + fileName + ' git pull ', (error, stdout, stderr) => {
//' git fetch origin && git reset --hard origin/master '
exec('cd ' + fileName + ' git checkout package.json && npm prune ' +' && git pull ', (error, stdout, stderr) => {
if (error) {
reject(error)
......@@ -195,7 +285,7 @@
})
})
}
//frontend was selected and the next step (streaming to zip) has to wait until the frontend is built
promiseArray.push(frontendAll());
finalizeZip();
......@@ -243,13 +333,13 @@
// finishedArray.push('backend done');
}
if(file.zipFileName === 'frontend'){
const stream = fsReaddir(file.path)
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 frontendStream = fs.createReadStream(data[i]);
zip.file(data[i], frontendStream);
const frontendReadsStream = fs.createReadStream(data[i]);
zip.file(data[i], frontendReadStream);
}
}).on('finish', function(){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment