-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
94 lines (76 loc) · 1.61 KB
/
main.js
File metadata and controls
94 lines (76 loc) · 1.61 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
prompt:"$ "
});
// Uncomment this block to pass the first stage
rl.prompt()
rl.on('line',(input)=>{
input=input.trim();
execCmd(input)
rl.prompt()
})
let CMDS=["echo","exit","type"]
let usr_bin=["ls"]
let _bin=["cat","cp","mkdir"]
let _usr_local_bin=["valid_command"]
let _tmp_foo=["my_exe"]
function execCmd(command){
const{cmd,args}=getCmd(command)
if(cmd==="echo")
{
console.log(args.join(" "))
}
else if(cmd==="exit")
{
process.exit(0)
}
else if(cmd==="type")
{
printType(args[0])
}
else{
console.log(`${cmd}: command not found`)
}
}
function getCmd(command)
{
args=command.split(/\s+/)
cmd=args[0]
args.shift()
return {cmd,args}
}
function printType(cmdName)
{
let found=false;
if(CMDS.includes(cmdName))
{
console.log(`${cmdName} is a shell builtin`)
found=true
}
else if(usr_bin.includes(cmdName))
{
console.log(`${cmdName} is /usr/bin/${cmdName}`)
found=true
}
else if(_usr_local_bin.includes(cmdName))
{
console.log(`${cmdName} is /usr/bin/${cmdName}`)
found=true
}
else if(_bin.includes(cmdName))
{
console.log(`${cmdName} is /bin/${cmdName}`)
found=true
}
else if(_tmp_foo.includes(cmdName))
{
console.log(`${cmdName} is tmp/foo/${cmdName}`)
found=true
}
if(!found)
{
console.log(`${cmdName}: not found`)
}
}