forked from unwriter/Bitcom
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
executable file
·56 lines (55 loc) · 1.39 KB
/
index.js
File metadata and controls
executable file
·56 lines (55 loc) · 1.39 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
#!/usr/bin/env node
const path = require('path')
require('dotenv').config({path: path.resolve(process.cwd(), '.bit')})
const init = require('./init')
const useradd = require('./useradd')
const create = require('./create')
const whoami = require('./whoami')
const tokenize = function(tokens) {
let result = []
let bundle = []
for(let index=0; index<tokens.length; index++) {
let token = tokens[index].toLowerCase()
if (['to'].includes(token)) {
result.push(bundle)
result.push([token])
bundle = []
} else {
bundle.push(token)
}
}
result.push(bundle)
return result
}
const parse = function(sequences) {
console.log(sequences)
let cmd = sequences[0][0]
if (cmd === 'init') {
init()
} else if (cmd === 'whoami') {
whoami()
} else if (cmd === 'useradd') {
useradd()
} else if (cmd === 'cat') {
// bit cat README.md to readme
} else if (cmd === 'echo') {
if (sequences.length === 3
&& sequences[1] && sequences[1][0] === 'to'
&& sequences[2] && sequences[2].length === 1) {
let content = sequences[0][1]
let filename = sequences[2][0]
console.log(content, filename)
create(filename, content)
}
}
}
if (require.main === module) {
if (process.argv.length >= 3) {
let tok = tokenize(process.argv.slice(2))
parse(tok)
}
}
module.exports = {
tokenize: tokenize,
parse: parse
}