@@ -2,6 +2,7 @@ package main
2
2
3
3
import (
4
4
"flag"
5
+ "fmt"
5
6
"math/rand"
6
7
"os"
7
8
"os/signal"
@@ -14,29 +15,32 @@ import (
14
15
"github.com/Shopify/toxiproxy/v2"
15
16
)
16
17
17
- var (
18
- host string
19
- port string
20
- config string
21
- )
18
+ type cliArguments struct {
19
+ host string
20
+ port string
21
+ config string
22
+ seed int64
23
+ printVersion bool
24
+ }
22
25
23
- func init () {
24
- flag .StringVar (& host , "host" , "localhost" , "Host for toxiproxy's API to listen on" )
25
- flag .StringVar (& port , "port" , "8474" , "Port for toxiproxy's API to listen on" )
26
- flag .StringVar (& config , "config" , "" , "JSON file containing proxies to create on startup" )
27
- seed := flag .Int64 ("seed" , time .Now ().UTC ().UnixNano (), "Seed for randomizing toxics with" )
26
+ func parseArguments () cliArguments {
27
+ result := cliArguments {}
28
+ flag .StringVar (& result .host , "host" , "localhost" ,
29
+ "Host for toxiproxy's API to listen on" )
30
+ flag .StringVar (& result .port , "port" , "8474" ,
31
+ "Port for toxiproxy's API to listen on" )
32
+ flag .StringVar (& result .config , "config" , "" ,
33
+ "JSON file containing proxies to create on startup" )
34
+ flag .Int64Var (& result .seed , "seed" , time .Now ().UTC ().UnixNano (),
35
+ "Seed for randomizing toxics with" )
36
+ flag .BoolVar (& result .printVersion , "version" , false ,
37
+ `print the version (default "false")` )
28
38
flag .Parse ()
29
- rand .Seed (* seed )
39
+
40
+ return result
30
41
}
31
42
32
43
func main () {
33
- setupLogger ()
34
-
35
- server := toxiproxy .NewServer ()
36
- if len (config ) > 0 {
37
- server .PopulateConfig (config )
38
- }
39
-
40
44
// Handle SIGTERM to exit cleanly
41
45
signals := make (chan os.Signal , 1 )
42
46
signal .Notify (signals , syscall .SIGTERM )
@@ -45,7 +49,26 @@ func main() {
45
49
os .Exit (0 )
46
50
}()
47
51
48
- server .Listen (host , port )
52
+ cli := parseArguments ()
53
+ run (cli )
54
+ }
55
+
56
+ func run (cli cliArguments ) {
57
+ if cli .printVersion {
58
+ fmt .Printf ("toxiproxy-server version %s\n " , toxiproxy .Version )
59
+ return
60
+ }
61
+
62
+ setupLogger ()
63
+
64
+ rand .Seed (cli .seed )
65
+
66
+ server := toxiproxy .NewServer ()
67
+ if len (cli .config ) > 0 {
68
+ server .PopulateConfig (cli .config )
69
+ }
70
+
71
+ server .Listen (cli .host , cli .port )
49
72
}
50
73
51
74
func setupLogger () {
0 commit comments