@@ -2,19 +2,20 @@ package main
22
33import (
44 "context"
5- "flag"
65 "fmt"
6+ "os/signal"
7+
78 "github.com/rs/zerolog"
89 "github.com/rs/zerolog/log"
9- "os/signal "
10+ "github.com/urfave/cli/v2 "
1011
1112 "os"
1213 "time"
1314
1415 "github.com/abronan/valkeyrie"
1516 "github.com/abronan/valkeyrie/store"
1617 "github.com/abronan/valkeyrie/store/redis"
17- "github.com/xmonader /tcprouter"
18+ "github.com/threefoldtech /tcprouter"
1819)
1920
2021var validBackends = map [string ]store.Backend {
@@ -66,51 +67,64 @@ var (
6667)
6768
6869func main () {
69-
70- log . Logger = log . Output (zerolog. ConsoleWriter { Out : os . Stderr })
71-
72- flag . StringVar ( & cfgPath , "config" , "" , "Configuration file path" )
73- flag . Parse ()
74-
75- log . Printf ( "reading config from: %v" , cfgPath )
76- cfg , err := readConfig ( cfgPath )
77- if err != nil {
78- log . Fatal (). Err ( err ). Msg ( "failed to read configuration" )
70+ app := cli . NewApp ()
71+ app . Version = "0.0.1"
72+ app . Usage = "TCP router client"
73+ app . EnableBashCompletion = true
74+ app . Flags = []cli. Flag {
75+ & cli. StringFlag {
76+ Name : "config" ,
77+ Usage : "Path to configuration file" ,
78+ Value : "config.toml" ,
79+ },
7980 }
80- log .Printf ("main config: %+v" , cfg )
81-
82- if err := initBackend (cfg ); err != nil {
83- log .Fatal ().Err (err ).Msg ("failed to initialize database backend" )
81+ app .Action = func (c * cli.Context ) error {
82+ log .Logger = log .Output (zerolog.ConsoleWriter {Out : os .Stderr })
83+ cfgPath := c .String ("config" )
84+ log .Printf ("reading config from: %v" , cfgPath )
85+ cfg , err := readConfig (cfgPath )
86+ if err != nil {
87+ log .Fatal ().Err (err ).Msg ("failed to read configuration" )
88+ }
89+ log .Printf ("main config: %+v" , cfg )
90+
91+ if err := initBackend (cfg ); err != nil {
92+ log .Fatal ().Err (err ).Msg ("failed to initialize database backend" )
93+ }
94+
95+ backend := cfg .Server .DbBackend .Backend ()
96+ addr := cfg .Server .DbBackend .Addr ()
97+ kv , err := initStore (backend , addr )
98+ if err != nil {
99+ log .Fatal ().
100+ Err (err ).
101+ Str ("backend type" , string (backend )).
102+ Msg ("Cannot create backend store" )
103+ }
104+
105+ serverOpts := tcprouter.ServerOptions {
106+ ListeningAddr : cfg .Server .Host ,
107+ ListeningTLSPort : cfg .Server .Port ,
108+ ListeningHTTPPort : cfg .Server .HTTPPort ,
109+ ListeningForClientsPort : cfg .Server .ClientsPort ,
110+ }
111+ s := tcprouter .NewServer (serverOpts , kv , cfg .Server .Services )
112+
113+ cSig := make (chan os.Signal , 1 )
114+ signal .Notify (cSig , os .Interrupt , os .Kill )
115+
116+ ctx , cancel := context .WithCancel (context .Background ())
117+ go func () {
118+ // Block until a signal is received.
119+ <- cSig
120+ cancel ()
121+ }()
122+
123+ return s .Start (ctx )
84124 }
85125
86- backend := cfg .Server .DbBackend .Backend ()
87- addr := cfg .Server .DbBackend .Addr ()
88- kv , err := initStore (backend , addr )
126+ err := app .Run (os .Args )
89127 if err != nil {
90- log .Fatal ().
91- Err (err ).
92- Str ("backend type" , string (backend )).
93- Msg ("Cannot create backend store" )
94- }
95-
96- serverOpts := tcprouter.ServerOptions {
97- ListeningAddr : cfg .Server .Host ,
98- ListeningTLSPort : cfg .Server .Port ,
99- ListeningHTTPPort : cfg .Server .HTTPPort ,
100- ListeningForClientsPort : cfg .Server .ClientsPort ,
128+ log .Fatal ().Msg (err .Error ())
101129 }
102- s := tcprouter .NewServer (serverOpts , kv , cfg .Server .Services )
103-
104- c := make (chan os.Signal , 1 )
105- signal .Notify (c , os .Interrupt , os .Kill )
106-
107- ctx , cancel := context .WithCancel (context .Background ())
108- go func () {
109- // Block until a signal is received.
110- <- c
111- cancel ()
112- }()
113-
114- s .Start (ctx )
115-
116130}
0 commit comments