OSDN Git Service

Modified: Upload, Command execution
[eos/zephyr.git] / server / api / v1 / execution / index.js
1 'use strict';
2
3 var express    = require('express');
4 var fs = require('fs')
5 var router     = express.Router()
6 var path       = require('path')
7 var formidable = require('formidable')
8 var db = require(__dirname + '/../../../../server/class/DB').instance;
9 var eos = require(__dirname + '/../../../../server/class/Eos').instance;
10 var ws = require(__dirname + '/../../../../server/class/WebSocket').instance;
11
12 router.post('/', function(req, res) {
13
14     ws.emit();
15
16     var form = new formidable.IncomingForm();
17     var root;
18     var result;
19
20     var command;
21     var options;
22     var workspace;
23
24     var optionsArray;
25
26     if(process.env.NODE_ENV === 'debug') {
27         root = __dirname + '/../../../../user-specific-files/workspace.debug/';
28     } else {
29         root = __dirname + '/../../../../user-specific-files/workspace/';
30     }
31
32     form.parse(req, function(err, fields, files) {
33         var data = JSON.parse(fields.data);
34         command = data.command;
35         options = data.options;
36         workspace = data.workspace;
37     });
38
39     form.on('end', function() {
40         Promise.all([eos.validate(command, options, workspace), eos.toExecArray(command, options, workspace)])
41         .catch(function(r) {
42             var info = {
43                 status: 'error',
44                 message: r.message
45             };
46             console.log(r.message);
47             res.send(info);
48         })
49         .then(function(r) {
50             var optionsArray = r[1];
51             return eos.execute(command, optionsArray);
52         })
53         .then(function(r) {
54             var info = {
55                 status: 'success',
56             };
57
58             console.log('start readdir');
59             fs.readdir(root, function(err, list) {
60                 console.log('in readdir');
61                 if(err) {
62                   console.log('in err');
63                   console.error(err);
64                   process.exit(1);
65                 } else {
66                   console.log(list.length.tostring);
67
68                   for (var i = 0; i< list.length; i++) {
69                     //db.existFile(list[i])
70                     //if(db.existFileId(list[i])) {
71                     //  console.log('execute exist:'+list[i]);
72                     if('A'<=list[i][0] && list[i][0]<='z' ) {
73                       db.createFile(list[i], '/');
74                     }
75                   }
76
77                 }
78             });
79
80             console.log('end readdir');
81             //db.createFile('test.out','/');
82             //var id = db.getDirectory('/');
83             //console.log(db.getDirectoryId('/').tostring);
84             /*
85             for( var name in db.getFiles(id)) {
86               consoiel.log(name);
87               if(db.notExistFile(name, '/')) {
88                   console.log(name);
89                   db.createFile(name, '/');
90               }
91             }
92             */
93
94             res.send(r);
95         });
96     });
97 });
98
99 module.exports = router;