Skip to content

Commit b2f8d6b

Browse files
committed
implement minimally unique command matching
- f, fl, fla and flag all match flag for example fixes: #32
1 parent ec533c5 commit b2f8d6b

File tree

1 file changed

+84
-26
lines changed

1 file changed

+84
-26
lines changed

main.go

Lines changed: 84 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"flag"
55
"fmt"
66
"os"
7+
"strings"
78

89
"ret/commands"
910
"ret/config"
@@ -41,38 +42,95 @@ func main() {
4142

4243
config.ParseUserConfig()
4344

44-
switch flag.Arg(0) {
45-
case "flag":
45+
command := flag.Arg(0)
46+
47+
// flag
48+
if command[0] == 'f' {
4649
commands.Flag(flag.Args()[1:])
47-
case "add":
48-
util.EnsureSkeleton()
49-
commands.Add(flag.Args()[1:])
50-
case "status":
51-
commands.Status(flag.Args()[1:])
52-
case "pwn":
50+
return
51+
}
52+
53+
// pwn
54+
if command[0] == 'p' {
5355
commands.Pwn(flag.Args()[1:])
54-
case "docker":
56+
return
57+
}
58+
59+
// docker
60+
if command[0] == 'd' {
5561
commands.Docker(flag.Args()[1:])
56-
case "ghidra":
62+
return
63+
}
64+
65+
// ghidra
66+
if command[0] == 'g' {
5767
util.EnsureSkeleton()
5868
commands.Ghidra(flag.Args()[1:])
59-
case "ida":
69+
return
70+
}
71+
72+
// ida
73+
if command[0] == 'i' {
6074
util.EnsureSkeleton()
6175
commands.Ida(flag.Args()[1:])
62-
case "check":
63-
commands.Check(flag.Args()[1:])
64-
case "syscall":
65-
commands.Syscall(flag.Args()[1:])
66-
case "abi":
67-
commands.Abi(flag.Args()[1:])
68-
case "writeup":
69-
commands.Writeup(flag.Args()[1:])
70-
case "cheatsheet":
71-
commands.Cheatsheet(flag.Args()[1:])
72-
case "wizard":
73-
commands.Wizard(flag.Args()[1:])
74-
default:
75-
flag.Usage()
76-
os.Exit(1)
76+
return
7777
}
78+
79+
// add, abi
80+
if command[0] == 'a' && len(command) > 1 {
81+
if command[1] == 'd' {
82+
util.EnsureSkeleton()
83+
commands.Add(flag.Args()[1:])
84+
return
85+
}
86+
87+
if command[1] == 'b' {
88+
commands.Abi(flag.Args()[1:])
89+
return
90+
}
91+
}
92+
93+
// status, syscall
94+
if command[0] == 's' && len(command) > 1 {
95+
if command[1] == 't' {
96+
commands.Status(flag.Args()[1:])
97+
return
98+
}
99+
100+
if command[1] == 'y' {
101+
commands.Syscall(flag.Args()[1:])
102+
return
103+
}
104+
}
105+
106+
// check, cheatsheet
107+
if command[0] == 'c' && len(command) > 3 {
108+
if strings.Compare("chec", command[:4]) == 0 {
109+
commands.Check(flag.Args()[1:])
110+
return
111+
}
112+
113+
if strings.Compare("chea", command[:4]) == 0 {
114+
commands.Cheatsheet(flag.Args()[1:])
115+
return
116+
}
117+
}
118+
119+
// writeup, wizard
120+
if command[0] == 'w' && len(command) > 1 {
121+
fmt.Println(command)
122+
if command[1] == 'r' {
123+
commands.Writeup(flag.Args()[1:])
124+
return
125+
}
126+
127+
if command[1] == 'i' {
128+
commands.Wizard(flag.Args()[1:])
129+
return
130+
}
131+
}
132+
133+
// help
134+
flag.Usage()
135+
os.Exit(1)
78136
}

0 commit comments

Comments
 (0)