|
1 | 1 | package main |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "flag" |
| 4 | + "fmt" |
5 | 5 | "os" |
6 | 6 |
|
7 | | - "github.com/Gurpartap/logrus-stack" |
| 7 | + logrus_stack "github.com/Gurpartap/logrus-stack" |
| 8 | + "github.com/jaffee/commandeer" |
8 | 9 | "github.com/mikekonan/freqtradeProxy/proxy/kucoin" |
9 | 10 | "github.com/mikekonan/freqtradeProxy/store" |
10 | 11 | "github.com/sirupsen/logrus" |
11 | 12 | ) |
12 | 13 |
|
13 | | -func main() { |
14 | | - logrus.SetOutput(os.Stdout) |
15 | | - logrus.AddHook(logrus_stack.StandardHook()) |
| 14 | +var version = "dev" |
16 | 15 |
|
17 | | - port := flag.Int("port", 8080, "listen port") |
18 | | - verbose := flag.Int("verbose", 0, "verbose level. 0 - info [default]. 1 - debug. 2 - trace.") |
19 | | - flag.Parse() |
| 16 | +type app struct { |
| 17 | + Config kucoin.Config `flag:"!embed"` |
| 18 | + Verbose int `help:"verbose level: 0 - info, 1 - debug, 2 - trace"` |
| 19 | +} |
| 20 | + |
| 21 | +func newApp() *app { |
| 22 | + return &app{ |
| 23 | + Verbose: 0, |
| 24 | + Config: kucoin.Config{ |
| 25 | + Port: "8080", |
| 26 | + Bindaddr: "0.0.0.0", |
| 27 | + }, |
| 28 | + } |
| 29 | +} |
20 | 30 |
|
21 | | - switch *verbose { |
| 31 | +func (m *app) configure() { |
| 32 | + switch m.Verbose { |
22 | 33 | case 0: |
23 | 34 | logrus.SetLevel(logrus.InfoLevel) |
24 | 35 | case 1: |
25 | 36 | logrus.SetLevel(logrus.DebugLevel) |
26 | 37 | case 2: |
27 | 38 | logrus.SetLevel(logrus.TraceLevel) |
28 | 39 | } |
| 40 | +} |
| 41 | + |
| 42 | +func (a *app) Run() error { |
| 43 | + logrus.SetOutput(os.Stdout) |
| 44 | + logrus.AddHook(logrus_stack.StandardHook()) |
| 45 | + |
| 46 | + logrus.Infof("freqtrade-proxy version - %s", version) |
29 | 47 |
|
30 | | - s := store.New() |
31 | | - k := kucoin.New(s) |
32 | | - k.Start(*port) |
| 48 | + if a.Verbose > 2 { |
| 49 | + return fmt.Errorf("wrong verbose level '%d'", a.Verbose) |
| 50 | + } |
| 51 | + |
| 52 | + a.configure() |
| 53 | + |
| 54 | + if err := a.Config.Validate(); err != nil { |
| 55 | + return err |
| 56 | + } |
| 57 | + |
| 58 | + k := kucoin.New(store.New(), a.Config) |
| 59 | + k.Start() |
| 60 | + |
| 61 | + return nil |
| 62 | +} |
| 63 | + |
| 64 | +func main() { |
| 65 | + app := newApp() |
| 66 | + |
| 67 | + if err := commandeer.Run(app); err != nil { |
| 68 | + logrus.Fatal(err) |
| 69 | + } |
33 | 70 | } |
0 commit comments