package main import ( "fmt" "io/ioutil" "log" "os" "path/filepath" "strconv" "github.com/urfave/cli" "gitlab.com/byzantine-lab/tan-monitor/monitor" ) var app *cli.App func init() { app = cli.NewApp() app.Name = filepath.Base(os.Args[0]) app.Usage = "Tangerine Newtwork Monitor" app.Commands = []cli.Command{ commandStart, } } var commandStart = cli.Command{ Name: "start", Usage: "Start monitor job", ArgsUsage: "<networkID> <ethThreshold>", Description: `Start network monitor with <networkID> and <ethThreshold> <ethThreshold>'s unit is ETH`, Flags: []cli.Flag{ cli.StringFlag{ Name: "emailPassword", Value: "./email.password", Usage: "Path to the email sender password", }, cli.StringFlag{ Name: "ccList", Value: "./cc.txt", Usage: "Path to the cc list", }, }, Action: func(ctx *cli.Context) error { if len(ctx.Args()) != 2 { log.Fatalf("invalid argument count") } networkID, err := strconv.Atoi(ctx.Args()[0]) if err != nil { panic(err) } threshold := ctx.Args()[1] emailPassword, err := ioutil.ReadFile(ctx.String("emailPassword")) if err != nil { panic(err) } ccList, _ := ioutil.ReadFile(ctx.String("ccList")) backend := monitor.NewBlockchainBackend(networkID) m := monitor.NewMonitor(networkID, backend, threshold) email := monitor.NewEmail( "no-reply@byzantine-lab.io", string(emailPassword), "smtp-relay.gmail.com", string(ccList), ) m.Register(email) m.Run() return nil }, } func main() { if err := app.Run(os.Args); err != nil { fmt.Println("app.Run error:", err) os.Exit(1) } }