-
Notifications
You must be signed in to change notification settings - Fork 2
/
Command_Help.go
208 lines (187 loc) · 5.23 KB
/
Command_Help.go
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
package main
import (
"fmt"
)
func help(cmd []string){
args,r := parseArguments(cmd,0)
if r==1 {
fmt.Println(`
| ------------ BOLT INSPECTOR COMMANDS ------------ |
All commands and arguments are case sensitive
help [?]:
See this information again, or get more
information about a specific command.
bucket <path>:
Create a new bucket at the given path.
cd <path>:
Change the current bucket to the
specified one.
copy <source path> <destination path>:
Copy the value from one path to
another path.
delete <path>:
Delete the given key. Works for both
key/value pairs and for buckets.
empty [path]:
Delete all values and buckets stored
within the given bucket.
exit:
Terminate the program.
list [k|b] [v]:
List all of the keys in the current
bucket.
move <source path> <destination path>:
Move a value from a given path to
another location.
print <path> [s|i|ui|b]:
Print the value of the specified key.
rlist [v] [depth=<int>]:
Recursively list contents of the current
bucket and all nested buckets.
write <path> <value> [s|i|ui]:
Write the value to the specified key.
`)
return
} else if r==3{
fmt.Println("[Error] Couldn't parse arguments.")
return
}
valid := false
constr := args[0]
title := ""
body := ""
argstr := ""
template:= `
Command:
- %s
Title:
- %s
Function:
- %s
%s
`
if args[0]=="exit" {
valid = true
title = "Exit"
body = "This command terminates the program"
} else if args[0]=="list" {
valid = true
title = "List"
constr = "list [k|b] [v]"
body = "List all of the keys in the current bucket."
argstr = `Arguments:
- k : only normal keys, not buckets
- b : only buckets, not normal keys
- v : verbose mode. Shows more information`
} else if args[0]=="rlist" {
valid = true
title = "Recursive List"
constr = "rlist [v] [depth=<int>]"
body = `Recursively list contents of the current
| bucket and all nested buckets.`
argstr = `Arguments:
- v : verbose mode. Shows more information
- d : synonym for depth. d=<int> works.
- depth : Depth to recurse`
} else if args[0]=="cd" {
valid = true
title = "Change Bucket"
constr = "cd <path>"
body = `Change the current bucket to the
| specified one. Can use absolute or
| relative paths. Relative paths are basic
| at the moment, not full unix emulation.
| '~' is the database root.`
argstr = `Arguments:
- path: Path to the bucket being moving to`
} else if args[0]=="print" {
valid = true
title = "Print"
constr = "print <path> [s|i|ui|b]"
body = `Print the value of the specified key.
| You can put as many of these arguments
| as needed, separated by spaces, and it
| will print them all in the order you
| provided.`
argstr = `Arguments:
- path: path to value to print
- s : print as string
- i : print as signed int32
- ui: print as unsigned int32
- b : print as bytes`
} else if args[0]=="write" {
valid = true
title = "Write"
constr = "write <path> <value> [s|i|ui]"
body = `Write the value to the specified key.
| If the key doesn't exist, it will be
| created. If it does exist, the current
| value will be overwritten with the new
| value. Key is converted from string to
| bytes to insert. Value is, by default,
| written as the string value of the provided
| input. Only writes once, so only the
| first argument sticks.`
argstr = `Arguments:
- path: path to save value to
- s : write value as string -> bytes
- i : write value as int32 -> bytes
- ui: write value as uint32 -> bytes`
} else if args[0]=="bucket" {
valid = true
title = "Create Bucket"
constr = "bucket <key>"
body = `Create a nested bucket in the current
| bucket with the given key. Returns an
| error if the key is already defined.`
argstr = `Arguments:
- key: name of bucket to create`
} else if args[0]=="delete" {
valid = true
title = "Delete"
constr = "delete <path>"
body = `Delete the given key. Works for both
| key/value pairs and for buckets. It
| asks for a confirmation prior to
| affecting the database.`
argstr = `Arguments:
- path: path to value or bucket to delete`
} else if args[0]=="empty" {
valid = true
title = "Empty"
constr = "empty [path]"
body = `Delete all values and buckets stored
| within the given bucket. If no bucket
| argument is given, it empties the
| current bucket.`
argstr = `Arguments:
- path: path to bucket to empty`
} else if args[0]=="move" {
valid = true
title = "Move"
constr = "move <source path> <destination path>"
body = `Move a value from a given path to another
| location. It functions by copying the value,
| then deleting the original. The same function
| does both, with just a bool at the end to
| tell it whether to delete the original or not.
| Can also be seen as a rename command.`
argstr = `Arguments:
- source path: path of source value
- destination path: path to move the value to`
} else if args[0]=="copy" {
valid = true
title = "Copy"
constr = "copy <source path> <destination path>"
body = `Copy the value from one path to
| another path.`
argstr = `Arguments:
- source path: path of source value
- destination path: path to copy the value to`
}
if valid {
fmt.Printf(template,constr,title,body,argstr)
} else {
fmt.Printf("[Error] Unknown Command %s\n",args[0])
}
}