@@ -3,22 +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
11
+
12
+ var (
13
+ Command string
13
14
argLength int
15
+ Args []string
14
16
)
17
+
15
18
type fn func ()
16
- func (c * Cli ) SetHandler (cmd string ,fun fn ) {
19
+
20
+ func (c * Cli ) SetHandler (cmd string , fun fn ) {
17
21
if Command == cmd {
18
22
fun ()
19
- }
23
+ }
20
24
}
21
- func contains (str string ,s []string ) bool {
25
+ func contains (str string , s []string ) bool {
22
26
for _ , v := range s {
23
27
if v == str {
24
28
return true
@@ -27,27 +31,33 @@ func contains(str string,s []string) bool {
27
31
28
32
return false
29
33
}
30
- func (c * Cli ) PrintHelp (){
34
+ func (c * Cli ) PrintHelp () {
31
35
fmt .Println (c .HelpMsg )
32
36
}
33
- func (c * Cli ) PrintVersion (){
37
+ func (c * Cli ) PrintVersion () {
34
38
fmt .Println (c .Version )
35
39
}
36
- func (c * Cli ) Setup (){
37
- argLength = len (os .Args )
38
- if argLength > 1 {
39
- if (contains (os .Args [1 ],c .AcceptedCommands )){
40
- Command = os .Args [1 ]
41
- }else {
42
- fmt .Println ("Command not found: " ,os .Args [1 ])
43
- }
44
- }else {
45
- fmt .Println ("Not enough arguments" )
46
- os .Exit (1 )
47
- }
48
- // set default cmd's
49
- c .SetHandler ("-v" ,c .PrintVersion )
50
- c .SetHandler ("version" ,c .PrintVersion )
51
- c .SetHandler ("-h" ,c .PrintHelp )
52
- 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
+ Args = 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 )
53
63
}
0 commit comments