-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbash.js
60 lines (53 loc) · 1.48 KB
/
bash.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
var command = require('./command');
process.stdout.write('prompt > ');
var done = function (output){
process.stdout.write(output);
process.stdout.write('\nprompt > ');
};
process.stdin.on('data', function (data) {
var cmdString = data.toString().trim();
var args, cmd;
var cmdList = cmdString.split(/\s*\|\s*/g);
var args = parseArgs(cmdList);
var temp = undefined;
for(var i =0; i<args.length; i++){
var func = matchCommands(args[i][0]);
//console.log(done);
//console.log(args[i].slice(1));
temp = func(temp, args[i].slice(1), done);
console.log(temp);
}
//if (cmdString.split(/\s*\|\s*/g).length > 1){
// args = cmdString.split(/\s*\|\s*/g).length;
/* cmd = args[0].split(' ')[0];
} else {
args = data.toString().trim().split(' ');
cmd = args[0];
}*/
});
function matchCommands(cmd){
var functionToReturn;
if(cmd === 'pwd'){
functionToReturn = command.getPWD;
} else if (cmd ==='date'){
functionToReturn = command.getDate;
} else if (cmd === 'ls'){
functionToReturn = command.ls;
} else if (cmd === 'cat'){
functionToReturn = command.cat;
} else if (cmd === 'head'){
functionToReturn = command.head;
} else if (cmd === 'tail'){
functionToReturn = command.tail;
} else if (cmd === 'curl'){
functionToReturn = command.curl;
}
return functionToReturn;
}
function parseArgs(arg){
var args = [];
for(var i = 0; i<arg.length; i++){
args[i] = arg[i].toString().trim().split(' ');
}
return args;
}