-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathmain.go
90 lines (79 loc) · 1.74 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package main
import (
"fmt"
"os"
"os/signal"
zkevmbridgeservice "github.com/0xPolygonHermez/zkevm-bridge-service"
"github.com/0xPolygonHermez/zkevm-bridge-service/autoclaimservice/autoclaim"
"github.com/0xPolygonHermez/zkevm-bridge-service/autoclaimservice/blockchainmanager"
"github.com/0xPolygonHermez/zkevm-bridge-service/autoclaimservice/config"
"github.com/0xPolygonHermez/zkevm-bridge-service/log"
"github.com/urfave/cli/v2"
)
const (
flagCfg = "cfg"
flagNetwork = "network"
)
const (
// App name
appName = "zkevm-bridge"
)
func main() {
app := cli.NewApp()
app.Name = appName
app.Version = zkevmbridgeservice.Version
flags := []cli.Flag{
&cli.StringFlag{
Name: flagCfg,
Aliases: []string{"c"},
Usage: "Configuration `FILE`",
Required: false,
},
}
app.Commands = []*cli.Command{
{
Name: "version",
Aliases: []string{},
Usage: "Application version and build",
Action: version,
},
{
Name: "run",
Aliases: []string{},
Usage: "Run the zkevm bridge",
Action: run,
Flags: flags,
},
}
err := app.Run(os.Args)
if err != nil {
fmt.Printf("\nError: %v\n", err)
os.Exit(1)
}
}
func version(*cli.Context) error {
zkevmbridgeservice.PrintVersion(os.Stdout)
return nil
}
func run(ctx *cli.Context) error {
configFilePath := ctx.String(flagCfg)
c, err := config.Load(configFilePath)
if err != nil {
return err
}
log.Init(c.Log)
bm, err := blockchainmanager.NewClient(ctx.Context, &c.BlockchainManager)
if err != nil {
return err
}
ac, err := autoclaim.NewAutoClaim(ctx.Context, &c.AutoClaim, bm)
if err != nil {
return err
}
go ac.Start()
// Wait for an in interrupt.
ch := make(chan os.Signal, 1)
signal.Notify(ch, os.Interrupt)
<-ch
return nil
}