diff --git a/packages/relayer/cli/cli.go b/packages/relayer/cli/cli.go index 6b026377d2..8720166736 100644 --- a/packages/relayer/cli/cli.go +++ b/packages/relayer/cli/cli.go @@ -48,7 +48,7 @@ var ( defaultConfirmations = 15 ) -func Run(mode relayer.Mode, watchMode relayer.WatchMode, layer relayer.Layer) { +func Run(mode relayer.Mode, watchMode relayer.WatchMode, layer relayer.Layer, httpOnly relayer.HTTPOnly) { if err := loadAndValidateEnv(); err != nil { log.Fatal(err) } @@ -86,31 +86,33 @@ func Run(mode relayer.Mode, watchMode relayer.WatchMode, layer relayer.Layer) { log.Fatal(err) } - indexers, closeFunc, err := makeIndexers(layer, db) - if err != nil { - sqlDB.Close() - log.Fatal(err) - } - - defer sqlDB.Close() - defer closeFunc() - forever := make(chan struct{}) - for _, i := range indexers { - go func(i *indexer.Service) { - if err := i.FilterThenSubscribe(context.Background(), mode, watchMode); err != nil { - log.Fatal(err) - } - }(i) - } - go func() { if err := srv.Start(fmt.Sprintf(":%v", os.Getenv("HTTP_PORT"))); err != nil { log.Fatal(err) } }() + if !httpOnly { + indexers, closeFunc, err := makeIndexers(layer, db) + if err != nil { + sqlDB.Close() + log.Fatal(err) + } + + defer sqlDB.Close() + defer closeFunc() + + for _, i := range indexers { + go func(i *indexer.Service) { + if err := i.FilterThenSubscribe(context.Background(), mode, watchMode); err != nil { + log.Fatal(err) + } + }(i) + } + } + <-forever } diff --git a/packages/relayer/cmd/main.go b/packages/relayer/cmd/main.go index 14784472db..8b5b85dc46 100644 --- a/packages/relayer/cmd/main.go +++ b/packages/relayer/cmd/main.go @@ -30,6 +30,12 @@ func main() { filter-and-subscribe: catch up on all previous messages, then subscribe to new messages `) + httpOnlyPtr := flag.Bool("http-only", false, `only run an http server and don't index blocks. + options: + true: only run an http server, dont index blocks + false: run an http server and index blocks + `) + flag.Parse() if !relayer.IsInSlice(relayer.Mode(*modePtr), relayer.Modes) { @@ -40,5 +46,10 @@ func main() { log.Fatal("mode not valid") } - cli.Run(relayer.Mode(*modePtr), relayer.WatchMode(*watchModePtr), relayer.Layer(*layersPtr)) + cli.Run( + relayer.Mode(*modePtr), + relayer.WatchMode(*watchModePtr), + relayer.Layer(*layersPtr), + relayer.HTTPOnly(*httpOnlyPtr), + ) } diff --git a/packages/relayer/flags.go b/packages/relayer/flags.go index 9fa09507fd..89378354b6 100644 --- a/packages/relayer/flags.go +++ b/packages/relayer/flags.go @@ -25,3 +25,5 @@ var ( FilterAndSubscribeWatchMode WatchMode = "filter-and-subscribe" WatchModes = []WatchMode{FilterWatchMode, SubscribeWatchMode} ) + +type HTTPOnly bool