@@ -3,24 +3,26 @@ package raspberry
3
3
import "os"
4
4
import "fmt"
5
5
6
- type Cli struct {
6
+ type Cli struct {
7
7
AcceptedCommands []string
8
- HelpMsg string
9
- Version float64
8
+ HelpMsg string
9
+ Version float64
10
10
}
11
- var (
12
- Command string
13
- FirstArg string
14
- SecondArg string
11
+
12
+ var (
13
+ Command string
15
14
argLength int
15
+ Args []string
16
16
)
17
+
17
18
type fn func ()
18
- func (c * Cli ) SetHandler (cmd string ,fun fn ) {
19
+
20
+ func (c * Cli ) SetHandler (cmd string , fun fn ) {
19
21
if Command == cmd {
20
22
fun ()
21
- }
23
+ }
22
24
}
23
- func contains (str string ,s []string ) bool {
25
+ func contains (str string , s []string ) bool {
24
26
for _ , v := range s {
25
27
if v == str {
26
28
return true
@@ -29,29 +31,33 @@ func contains(str string,s []string) bool {
29
31
30
32
return false
31
33
}
32
- func (c * Cli ) PrintHelp (){
34
+ func (c * Cli ) PrintHelp () {
33
35
fmt .Println (c .HelpMsg )
34
36
}
35
- func (c * Cli ) PrintVersion (){
37
+ func (c * Cli ) PrintVersion () {
36
38
fmt .Println (c .Version )
37
39
}
38
- func (c * Cli ) Setup (){
39
- argLength = len (os .Args )
40
- if argLength > 1 {
41
- if (contains (os .Args [1 ],c .AcceptedCommands )){
42
- Command = os .Args [1 ]
43
- FirstArg = os .Args [2 ]
44
- SecondArg = os .Args [3 ]
45
- }else {
46
- fmt .Println ("Command not found: " ,os .Args [1 ])
47
- }
48
- }else {
49
- fmt .Println ("Not enough arguments" )
50
- os .Exit (1 )
51
- }
52
- // set default cmd's
53
- c .SetHandler ("-v" ,c .PrintVersion )
54
- c .SetHandler ("version" ,c .PrintVersion )
55
- c .SetHandler ("-h" ,c .PrintHelp )
56
- c .SetHandler ("help" ,c .PrintHelp )
40
+ func shiftArgsDownward (arr []string ) []string {
41
+ arr = arr [2 :]
42
+ return arr
43
+ }
44
+ func (c * Cli ) Setup () {
45
+ argLength = len (os .Args )
46
+ if argLength > 1 {
47
+ if contains (os .Args [1 ], c .AcceptedCommands ) {
48
+ Command = os .Args [1 ]
49
+ Args = os .Args
50
+ shiftArgsDownward (Args )
51
+ } else {
52
+ fmt .Println ("Command not found: " , os .Args [1 ])
53
+ }
54
+ } else {
55
+ fmt .Println ("Not enough arguments" )
56
+ os .Exit (1 )
57
+ }
58
+ // set default cmd's
59
+ c .SetHandler ("-v" , c .PrintVersion )
60
+ c .SetHandler ("version" , c .PrintVersion )
61
+ c .SetHandler ("-h" , c .PrintHelp )
62
+ c .SetHandler ("help" , c .PrintHelp )
57
63
}
0 commit comments